Il 03/01/2014 21:19, Holger Hans Peter Freyther ha scritto: >> > So the process does not suspend and the TOS appears to be something >> > wird. Do you have an idea of what could go wrong? > I think it is a race: > > _after_ the process has been suspended by the primitive the async queue > is ran which will put back the semaphoreOOP into the myList. > > (gdb) bt > #0 0xb76d2901 in remove_process_from_list > (processOOP=processOOP@entry=0x40442c68) > at interp.c:1399 > #1 0xb76d29dc in add_last_link (semaphoreOOP=0x4043f6c0, > processOOP=processOOP@entry=0x40442c68) at interp.c:1478 > #2 0xb76d2a39 in sleep_process (processOOP=processOOP@entry=0x40442c68) at > interp.c:1887 > #3 0xb76d73cf in resume_process (processOOP=processOOP@entry=0x40489e78, > alwaysPreempt=<optimized out>, alwaysPreempt@entry=false) at interp.c:1797 > #4 0xb76e43bf in _gst_sync_signal > (semaphoreOOP=semaphoreOOP@entry=0x40489e80, > incr_if_empty=incr_if_empty@entry=true) at interp.c:1544 > #5 0xb76e4717 in _gst_do_async_signal (semaphoreOOP=0x40489e80) at > interp.c:1559 > #6 0xb76e58bf in empty_async_queue () at interp.c:1632 > #7 _gst_interpret (processOOP=processOOP@entry=0x40489e78) at > interp-jit.inl:420 > #8 0xb76e6c00 in _gst_nvmsg_send (receiver=receiver@entry=0x4043c800, > sendSelector=sendSelector@entry=0x40489e10, args=args@entry=0x0, > sendArgs=sendArgs@entry=0) at interp.c:2317 > > So is it possible that the suspended process is also the get_active_process > at that time? And then it gets re-inserted into the waiting list?
Doesn't sound impossible. I'll take a look next week (full week of free time hacking!) Paolo _______________________________________________ help-smalltalk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-smalltalk
