kaffe 0.8.3: Bug in kaffe/kaffevm/classMethod.c

Gregor Hoffleit flight at mathi.uni-heidelberg.DE
Tue Apr 8 12:33:26 PDT 1997


Hmm, as I wrote lately, there were severe threading problems introduced with 0.8.3 for Nextstep. All but the simplest programs loop endlessly in checkEvents(). Happens for all tested Nextstep architectures, therefore it's not dependent on the arch specific threading code.

I tried to track down the problem, but could not see any significant changes to kaffevm/thread.c since 0.8.2. The symptom is that checkEvent's select call never returns here. This happens e.g. with test/threads/T16. Nevertheless it works for some other examples, e.g. threads/T3.

I have no idea what I should look for.

	Gregor



This is the output of kaffe 0.8.3 with DBG and SDBG:

thefly:5> ../../kaffe/kaffe/kaffe T16
main thread 1146d4 base bfff7884 end bffff884
resumeThread 1146d4
startDaemon finaliser
startDaemon gc
resumeThread 11d48c
suspendOnQThread 11d48c 32430 (0)
resumeThread 12bb18
suspendOnQThread 12bb18 32444 (0)
new thread 1217a8 base 1f886c end 20086c
resumeThread 1217a8
aliveThread: tid 0x1217a8 ctx 0x1f8840
suspendOnQThread 1146d4 1217b8 (0)
firstStartThread 1217a8
blockOnFile()
0
resumeThread 1146d4
killThread 1217a8
aliveThread: tid 0x1217a8 ctx 0x1f8840
suspendOnQThread 1146d4 1217b8 (0)
checkEvents

here it holds ad infinitum. select never returns.


With kaffe 0.8.2, it worked fine:

thefly:6> /tmp/kaffe T16
main thread f40fc base bfff78cc end bffff8cc
resumeThread f40fc
startDaemon finaliser
startDaemon gc
resumeThread 102020
suspendOnQThread 102020 2242c (0)
resumeThread 10a1e4
suspendOnQThread 10a1e4 22444 (0)
new thread 1127ec base 1d9824 end 1e1824
resumeThread 1127ec
aliveThread: tid 0x1127ec ctx 0x11fb80
suspendOnQThread f40fc 112804 (0)
firstStartThread 1127ec
blockOnFile()
0
resumeThread f40fc
killThread 1127ec
aliveThread: tid 0x1127ec ctx 0x11fb80
new thread 1e2bb0 base 1ac208 end 1b4208
resumeThread 1e2bb0
aliveThread: tid 0x1e2bb0 ctx 0x11270c
suspendOnQThread f40fc 1e2bc8 (0)
firstStartThread 1e2bb0
blockOnFile()
suspendOnQThread 1e2bb0 20b48 (0)
checkEvents
Select returns 1
resumeThread 1e2bb0
1
resumeThread f40fc
killThread 1e2bb0
aliveThread: tid 0x1e2bb0 ctx 0x11270c
new thread 1e2e4c base 1e3274 end 1eb274
resumeThread 1e2e4c
aliveThread: tid 0x1e2e4c ctx 0x1e3224
suspendOnQThread f40fc 1e2e64 (0)

... and so on.

Any ideas ? 



More information about the kaffe mailing list