Hi,
Thanks Igor, Mariano, and David for your suggestions.
I have recompiled the VM with debug on.
I got this in gdb (crashes right after (ProcessorScheduler classPool at: #BackgroundProcess) terminate. is executed)
The output shown right before the first entry in the interpreter in event-driven mode, that is, after the first longjmp and return.
heartbeat heartbeat heartbeat enter interpreter
(stackPageFor((page->baseFP))) == page 17826
(stackPageFor((page->headSP))) == page 17829
(((page->nextPage)->prevPage)) == page 17822
!(((page->baseFP)) == 0) 17825
(((page->nextPage)->prevPage)) == page 17822
(stackPageFor((page->baseFP))) == page 17826
(stackPageFor((page->headSP))) == page 17829
Program received signal SIGSEGV, Segmentation fault. 0x08074e71 in pageListIsWellFormed () at /home/dima/src/cogvm/dmg-blessed/src/vm/gcc3x-interp.c:17822 17822 if (!(asserta((((page->nextPage)->prevPage)) == page))) { (gdb) where #0 0x08074e71 in pageListIsWellFormed () at /home/dima/src/cogvm/dmg-blessed/src/vm/gcc3x-interp.c:17822 #1 0x0806800f in checkForEventsMayContextSwitch (mayContextSwitch=1) at /home/dima/src/cogvm/dmg-blessed/src/vm/gcc3x-interp.c:8807 #2 0x0806df9a in handleStackOverflowOrEventAllowContextSwitch (mayContextSwitch=1) at /home/dima/src/cogvm/dmg-blessed/src/vm/gcc3x-interp.c:13052 #3 0x0806187e in L0internalActivateNewMethod () at /home/dima/src/cogvm/dmg-blessed/src/vm/gcc3x-interp.c:4605 #4 0x0809740f in main (argc=2, argv=0xbffff014, envp=0xbffff020) at /home/dima/src/cogvm/dmg-blessed/platforms/unix/vm/sqUnixEvtMain.c:1761 (gdb)
And these page numbers in assert messages are not random, they repeat every time the VM runs.
Thanks.
vm-dev@lists.squeakfoundation.org