On Fri, 2004-01-16 at 01:07, Leopold Toetsch wrote: > I've checked in now: > > * terminate the even loop thread on destroying of the last interp > * this could help against the spurious hangs reported on p6i > > Could you please check if that helps.
Yes, that's better. (Upgrading glibc didn't help -- I was worried that this was an NPTL issue that Parrot couldn't fix.) Now it hangs on t/pmc/timer: 0x10090b30 in Parrot_del_timer_event (interpreter=0x10273e88, timer=0x30185838) at src/events.c:176 176 for (entry = event_queue->head; entry; entry = entry->next) { (gdb) bac #0 0x10090b30 in Parrot_del_timer_event (interpreter=0x10273e88, timer=0x30185838) at src/events.c:176 #1 0x101f35e0 in del_timer (interpreter=0x10273e88, pmc=0x30185838) at timer.c:88 #2 0x101f3868 in Parrot_Timer_destroy (interpreter=0x10273e88, pmc=0x30185838) at timer.c:151 #3 0x1008bc10 in free_unused_pobjects (interpreter=0x10273e88, pool=0x10294808) at src/dod.c:529 #4 0x100345a8 in Parrot_really_destroy (exit_code=0, vinterp=0x10273e88) at src/interpreter.c:1137 #5 0x1008c7c0 in Parrot_exit (status=0) at src/exit.c:48 #6 0x10032134 in main (argc=1, argv=0x7ffff5c0) at imcc/main.c:555 and imcc/t/syn/file: 0x0ff976a4 in __pthread_sigsuspend () from /lib/libpthread.so.0 (gdb) bac #0 0x0ff976a4 in __pthread_sigsuspend () from /lib/libpthread.so.0 #1 0x0ff973e0 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0 #2 0x0ff96fe4 in pthread_onexit_process () from /lib/libpthread.so.0 #3 0x0fd0a694 in exit () from /lib/libc.so.6 #4 0x101a72fc in fataly (code=1, file=0x7ffff764 "temp.imc", lin=2, fmt=0xfe00610 "No such file or directory") at imcc/debug.c:34 #5 0x1019ca94 in include_file (file_name=0x102ba670 "non_existent.imc") at imcc.l:771 #6 0x10199330 in yylex (valp=0x7fffed60, interp=0x10273e88) at imcc.l:299 #7 0x10193e40 in yyparse (interp=0x10273e88) at imcc/imcparser.c:1611 #8 0x10031d34 in main (argc=1, argv=0x7ffff5d8) at imcc/main.c:493 Ahh, here's another for t/pmc/timer: Parrot_del_timer_event (interpreter=0x10273e88, timer=0x30185868) at src/events.c:177 177 if (entry->type == QUEUE_ENTRY_TYPE_TIMED_EVENT) { (gdb) bac #0 Parrot_del_timer_event (interpreter=0x10273e88, timer=0x30185868) at src/events.c:177 #1 0x101f35e0 in del_timer (interpreter=0x10273e88, pmc=0x30185868) at timer.c:88 #2 0x101f3868 in Parrot_Timer_destroy (interpreter=0x10273e88, pmc=0x30185868) at timer.c:151 #3 0x1008bc10 in free_unused_pobjects (interpreter=0x10273e88, pool=0x10294808) at src/dod.c:529 #4 0x100345a8 in Parrot_really_destroy (exit_code=0, vinterp=0x10273e88) at src/interpreter.c:1137 #5 0x1008c7c0 in Parrot_exit (status=0) at src/exit.c:48 #6 0x10032134 in main (argc=1, argv=0x7ffff5c0) at imcc/main.c:555 I hope this helps. -- c