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