2007-11-25

Limbo

En process som är på väg att dö kan gå många öden till mötes. Till att börja med kan jag lite förnöjsamt konstatera att 64-bitars JVM 1.6 lyckas dö konsekvent när man försöker göra hot redeploy av SP2 under JBoss. Då jag inte tror att det finns några avgörande icke-bytekodade komponenter i det jag har fört in är det något uppseendeväckande. Det är alltså ett x64-undantag som kastas (tror det är vårt kära GPF, men skall inte svära på det). Då försvinner processen sedan illa kvickt.

I enstaka fall uppstår däremot ett mer fascinerande tillstånd. Det är kanske vanligare när serversessionen gått under en längre tid (tack och lov har jag ju inga användare, för något dygn som längsta [in]aktiva tid för servern vore då rätt pinsamt), eller när jag pausat i utdata för att kontrollera något i den direktpresenterade delen av loggen (prisa Vista, här kommer konsolsökfunktionen). Några JNI-fel och en heapstatistikdump presenteras. Men processen blir inte bortvisad på grund av sin synd. Man kunde tro att den är fast i sin egen undantagshanterare, men då borde den ändå svara på begäran om att avslutas (en undantagshanterare i x86/x64 är ju inte principiellt annorlunda än någon annan kod när den väl har anropats). sysinternals-verktyget Process Explorer blir något förvirrat, men påstår att det finns enn tråd kvar, som är fast inne i ntdll och förmodligen då ett kärnanrop. Processen har utåt sett inte begått några oförlåtliga fel, men den har heller inte gjort fullkomligt rätt för sig. Suck.

Alltså är processen kvar, vilande, i detta märkliga mellanläge, den har ingen egen kod kvar, men den kan inte avallokeras. Mer irriterande förblir dess öppna filer just öppna. Här kunde man kanske tänka sig att göra en kodinjektion (om CreateRemoteThread funkar, vet inte hur det blir...) och stänga handtagen (anropa CloseHandle på allt som rör sig, såvida det inte är just det som orsakar problem ett, kan vara en märkligt halvöppen socket). Det som hittills har fungerat har varit en omstart av systemet, något man stundom ändå kan acceptera. Det har i alla fall Ante gått med på godvilligt, d.v.s. operativsystemet har gått till slut och startat om utan manuell hårdare intervention.

Så dock ej den senaste gången, nu ikväll, när jag jobbade från utanför stan. Terminalanslutningen bröts på ett lovande sätt. Den kom aldrig upp igen, på ett därmed något mindre lovande sätt. Från en process som har varit i ett något odefinierat mellantillstånd, till ett helt system. Nåja, jag får väl se senast imorgon kväll. Eventuellt kom den upp helt rimligt och snällt, med en ny adress.

Inga kommentarer: