Chromatic <[EMAIL PROTECTED]> wrote: > On Sat, 2004-01-17 at 04:29, Leopold Toetsch wrote:
>> I've converted this exit() to Parrot_exit() now. If that helps, I'll >> change a bunch of other such code too. > Yep, that fixed. Now there are hangs in some of the t/src files. Right > now, it's t/src/sprintf.t at test 2. The backtrace looks familiar: Fine. I just changed 2 occurences of exit. There are some more, that should fix more stuff. But I'm a bit worried about the reason, why it actually hangs here: > (gdb) bac > #0 0x0ff976a4 in __pthread_sigsuspend () from /lib/libpthread.so.0 ... > #3 0x0fd0a694 in exit () from /lib/libc.so.6 > #4 0x0fcf23a8 in __libc_start_main () from /lib/libc.so.6 These are exit calls from the main thread. That should AFAIK just kill all threads that got started eventually and finish the process. There seem to be a lot of exit() calls in the icu lib. Changing these isn't really a solution. > Perhaps a Parrot_cleanup() would help extenders and embedders? That is: Parrot_exit(exit_status) - we have that already. My first attempts to cleanup all interpreter resources use an on_exit(3) or atexit(3) handler, but both werent't protable, so the code was change to do an explicit destroy processing via Parrot_exit(). > -- c Thanks for digging into this, leo