English

Den kaxiga tråden

Efter att ha jobbat med minneshantering lite för länge verkade den här texten fullständigt naturlig. Kommentaren efter att den sjungts på julfesten 2009 var dock: "Det var inte så det gick till." Och, nej, jag får väl erkänna att det var det förmodligen inte.

(mel. 'Den kaxiga myran')

Låt mig boota upp min PC fast det är en Linux-klon
och berätta om en p-thread som betett sig som ett jon.
Den försökte att markera, för den var en worker-tråd
och i GC:n är dom flera som med detta håller på.
Som med detta håller på.

Det var många ord att vandra, pausa tänkte ingen på,
han kom bort ifrån de andra men markerade ändå.
Någon GB från stacken, just där hopptabellen låg,
hitta han ett ord på backen som han inte förutsåg.
Som han inte förutsåg.

Det låg kvar sen förra GC:n, "jag ska hoppa lite grann"
sade tråden, lade ordet i registret och försvann.
Han fick till ett riktigt longjmp och han landa med bravur
mitt i optimeringskoden, ingen viste riktigt hur.
Ingen viste riktigt hur.

Ej en byte jag ska markera, nu så ska jag ta mig fan
lämna heapen och istället patcha koden till en gran.
Men han kom aldrig till koden något hindrade hans kupp,
någon hade tagit låset som han skulle låsa upp.
Som han skulle låsa upp.

Tråden började att spinna, men han korta strået drog.
Högre prio sökte finna, CPU:n hade fått nog.
Schemaläggar'n sa till tråden: "Vänta här" och elakt log.
Sedan kastade han ID:t, tråden svalt ihjäl och dog.
Tråden svalt ihjäl och dog.

Låt nu detta bli en läxa, alla trådar som mig hör.
När man pekare förväxlar, då finns risken att man dör.
Om man börjar dra i trådar ett helt nystan snart man får.
Och om någon av dem bråkar dumpar vi dem i en core.
Dumpar vi dem i en core.