[Vm-dev] re: "callback failed to own the VM"

Craig Latta craig at netjam.org
Mon Oct 12 08:39:09 UTC 2015


     Hm, maybe a clue? Here's my callback thread (thread 3, zero-based
index) trying to own the VM:

***

Breakpoint 1, ownVM (threadIndexAndFlags=131075) at
/home/craig/Cog/src/vm/gcc3x-cointerpmt.c:17544
17544 printf("ownvm: %u\n", threadIndex);
(gdb) info threads
Id Target Id Frame
* 4 Thread 0x85fabb40 (LWP 12278) "squeak" ownVM
(threadIndexAndFlags=131075) at
/home/craig/Cog/src/vm/gcc3x-cointerpmt.c:17544
3 Thread 0x86feeb40 (LWP 12277) "squeak" 0xb7fdd428 in __kernel_vsyscall ()
2 Thread 0x8780fb40 (LWP 12276) "squeak" 0xb7fdd428 in __kernel_vsyscall ()
1 Thread 0xb7daf700 (LWP 12270) "squeak" 0xb7fdd428 in __kernel_vsyscall ()
(gdb) bt
#0 ownVM (threadIndexAndFlags=131075) at
/home/craig/Cog/src/vm/gcc3x-cointerpmt.c:17544
#1 0x0807b998 in ownVMFromUnidentifiedThread () at
/home/craig/Cog/src/vm/gcc3x-cointerpmt.c:17490
#2 0x0807b9ad in ownVM (threadIndexAndFlags=0) at
/home/craig/Cog/src/vm/gcc3x-cointerpmt.c:17541
#3 0x0811385d in thunkEntry (thunkp=0x8292030, stackp=0x85fab2a8) at
/home/craig/Cog/platforms/Cross/plugins/IA32ABI/ia32abicc.c:191
#4 0x08292042 in ?? ()
#5 0x867b9519 in _mids_channel_fsm_proc () from
/usr/lib/libgnsdk_musicid_stream.so.3.07.7
#6 0x8626e49c in _gcsl_thread_proc () from /usr/lib/libgnsdk_dsp.so.3.07.7
#7 0xb7fabf70 in start_thread (arg=0x85fabb40) at pthread_create.c:312
#8 0xb7e9bbee in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:129
(gdb) n
ownvm: 3
17545 flags = ((usqInt) threadIndexAndFlags) >> DisownFlagsShift;
(gdb) n
17546 if (flags & DisownVMForProcessorRelinquish) {
(gdb) n
17550 if (threadIndexAndFlags & LockGUIThreadFlag) {
(gdb) n
17571 assert(threadIndex == (ioGetThreadLocalThreadIndex()));
(gdb) n
17573 assert(((threadIndex >= 1) && (threadIndex <= GIV(numThreads))));
(gdb) n
17574 vmThread1 = GIV(threads)[threadIndex];
(gdb) n
17575 assert((((vmThread1->state)) == CTMUnavailable)
(gdb) n
17577 if (!(tryLockVMToIndex(threadIndex))) {
(gdb) n
ownvm: 1
17578 (vmThread1->state = CTMWantingOwnership);
(gdb)

***

     When I stepped over tryToLockVMToIndex(), the heartbeat thread
(thread 1, zero-based index) entered ownVM(). How was that possible?


     thanks,

-C

--
Craig Latta
netjam.org
+31   6 2757 7177 (SMS ok)
+ 1 415  287 3547 (no SMS)



More information about the Vm-dev mailing list