Het Rolldown-team heeft zojuist een fix samengevoegd die voorkomt dat Vite crasht met een “Illegal instruction”-fout op Android ARM64-apparaten die onder Termux draaien. Na tien maanden waarin ontwikkelaars zagen hoe hun builds volledig vastliepen voordat er ook maar enige code werd uitgevoerd, is het probleem eindelijk opgelost, en de volgende Rolldown-release op npm zal direct uit de doos werken.

Waarom de crash belangrijk was

Termux stelt gebruikers in staat om een Linux-achtige omgeving te draaien op Android-telefoons, en een groeiende gemeenschap vertrouwt erop als hun enige ontwikkelwerkstation. In Bangladesh, Nigeria en Indonesië gebruiken veel programmeurs een telefoon in plaats van een laptop om webapplicaties te schrijven en te bundelen. Vite, een snelle build-tool die talloze moderne sites aandrijft, is een essentieel onderdeel van die workflow. Wanneer Vite probeerde op te starten, kreeg het direct een “Illegal instruction”-fout, waardoor het proces werd beëindigd voordat er ook maar enige JavaScript werd geparsed. De fout gaf geen stack trace of log omdat het gebeurde tijdens het laden van een native library, waardoor ontwikkelaars met een doodlopend pad bleven zitten zonder duidelijke weg naar een workaround.

De technische mismatch

De hoofdoorzaak lag in een low-level aanname die verankerd zat in de native binding van Rolldown. De code verwachtte dat de processor ARMv8.1-instructies ondersteunde—een set die aanwezig is in nieuwere chips, maar ontbreekt in veel veelgebruikte Android SoCs, zoals de Cortex-A53. Wanneer een apparaat zonder deze instructies probeerde de library te laden, gaf de CPU een "illegal-instruction"-exception.

Wat de zaak bemoeilijkte, was dat de problematische code zich bevond in een dependency genaamd mimalloc, een memory allocator die een safety flag bevat om het gebruik van niet-ondersteunde instructies te blokkeren. Die flag werd alleen geactiveerd in “standaard Linux”-omgevingen. Hoewel Android de Linux-kernel gebruikt, identificeert het zichzelf anders, waardoor de beveiliging nooit werd geactiveerd en de crash erdoorheen glipte.

Hoe de fix is gebouwd

De samengevoegde wijziging breidt de safety check van mimalloc uit om Android (en FreeBSD) te herkennen als platforms die dezelfde bescherming nodig hebben. Door de library te patchen in plaats van ontwikkelaars te dwingen pakketten opnieuw te bouwen of te vervangen, herstelt de fix de compatibiliteit zonder extra stappen voor eindgebruikers.

Wat ontwikkelaars eraan hebben

  • Geen aangepast Termux-pakket nodig. De standaard npm install van Rolldown haalt nu een binary op die de nieuwe safety check respecteert.
  • Direct testen mogelijk. Een preview build die bij de openstaande pull request is gevoegd, stelt iedereen met een ARM64 Android-apparaat in staat om de fix vandaag nog te verifiëren, terwijl de volgende officiële Rolldown-versie op npm wordt uitgerold.

Overgebleven overwegingen

De oplossing hangt af van het publiceren van het bijgewerkte pakket door de Rolldown-maintainers; totdat dat gebeurt, moeten gebruikers vertrouwen op de preview build.

Waar je op moet letten

  • Timing van de npm-release. Houd het Rolldown changelog in de gaten; zodra de nieuwe versie in de registry verschijnt, brengt een eenvoudige npm install rolldown de fix naar productie.

De samengevoegde patch verandert een maandenlange impasse in een routine-update, wat laat zien hoe gegevens uit de praktijk en aanhoudende rapporten van de community een “niet geplande” bug kunnen veranderen in een opgelost probleem. Voor iedereen die webapps op een telefoon bouwt, zal de volgende Rolldown-release Vite eindelijk laten opstarten zonder de processor te laten crashen.