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

Reply via email to