On Monday 31 December 2007 07:16:44 Allison Randal wrote: > Just an FYI that intermittent test failures are to be expected after > r24346 in the following files: > > t/pmc/nci.t 1 256 65 1 50 > t/pmc/task.t 1 256 3 1 3 > t/run/options.t 1 256 26 1 23 > t/stm/basic_mt.t 3 768 4 3 1-3 > t/stm/runtime.t 2 512 5 2 2-3 > > (The shootout failures may be unrelated, since they predate this commit.) > > This change was fairly extensive, ripping out the old event loop and > reworking anything that depended on it to use the concurrency scheduler > instead. The few remaining failures appear to be GC related, and will > benefit from testing on multiple platforms. Let me know if you encounter > any interesting and unusual results. Like hangs rather than simple > failures (except in t/stm, which has been intermittently hanging for a > while now).
Here's what Helgrind says about (some of) the failures I see. This may be fun and interesting to someone who's read and understands the code (who is not me). There are a lot of similarities; it looks like there's one lock you need to hold at one point you're not holding. The error message about unmapped memory worries me; the GDB backtraces make me think that there's something wrong when a thread tries to find a function in libparrot. Yergh. Test Summary Report ------------------- t/op/time.t (Wstat: 256 Tests: 5 Failed: 1) Failed test number(s): 3 Non-zero exit status: 1 t/pmc/nci.t (Wstat: 2304 Tests: 65 Failed: 9) Failed test number(s): 42-50 Non-zero exit status: 9 t/pmc/task.t (Wstat: 256 Tests: 3 Failed: 1) Failed test number(s): 3 Non-zero exit status: 1 t/pmc/threads.t (Wstat: 1792 Tests: 20 Failed: 7) Failed test number(s): 2-5, 7-8, 12 Non-zero exit status: 7 t/pmc/timer.t (Wstat: 768 Tests: 6 Failed: 3) Failed test number(s): 3-5 Non-zero exit status: 3 t/dynoplibs/myops.t (Wstat: 768 Tests: 10 Failed: 3) Failed test number(s): 5-7 Non-zero exit status: 3 t/stm/basic_mt.t (Wstat: 1024 Tests: 4 Failed: 4) Failed test number(s): 1-4 Non-zero exit status: 4 t/stm/runtime.t (Wstat: 512 Tests: 5 Failed: 2) Failed test number(s): 2-3 Non-zero exit status: 2 Files=257, Tests=6945, 157 wallclock secs ( 2.36 usr 0.40 sys + 91.06 cusr 30.35 csys = 124.17 CPU) t/op/time_3.pasm ==550== Helgrind, a thread error detector. ==550== Copyright (C) 2007-2007, and GNU GPL'd, by OpenWorks LLP et al. ==550== Using LibVEX rev 1804, a library for dynamic binary translation. ==550== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==550== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==550== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==550== For more details, rerun with: -v ==550== ==550== Thread #1 is the program's root thread ==550== ==550== Thread #2 was created ==550== at 0x4D73A6C8: clone (in /lib/tls/i686/cmov/libc-2.6.1.so) ==550== by 0x4009666: [EMAIL PROTECTED] (hg_intercepts.c:213) ==550== by 0x41ABBEB: Parrot_cx_init_scheduler (scheduler.c:88) ==550== by 0x417ACA7: make_interpreter (inter_create.c:260) ==550== by 0x41665BE: Parrot_new (embed.c:85) ==550== by 0x804884E: main (main.c:49) ==550== ==550== Possible data race during write of size 4 at 0x4609190 ==550== at 0x41AC030: Parrot_cx_runloop_wake (scheduler.c:233) ==550== by 0x41AC967: Parrot_cx_schedule_sleep (scheduler.c:631) ==550== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==550== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==550== by 0x417C9B7: runops_int (interpreter.c:877) ==550== by 0x417D35D: runops (inter_run.c:104) ==550== by 0x417D5EA: runops_args (inter_run.c:230) ==550== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==550== by 0x41674B5: Parrot_runcode (embed.c:886) ==550== by 0x43760A1: imcc_run_pbc (main.c:788) ==550== by 0x4376A77: imcc_run (main.c:1069) ==550== by 0x80488FC: main (main.c:62) ==550== Old state: shared-readonly by threads #1, #2 ==550== New state: shared-modified by threads #1, #2 ==550== Reason: this thread, #1, holds no consistent locks ==550== Location 0x4609190 has never been protected by any lock ==550== ==550== Possible data race during write of size 4 at 0x400B000 ==550== at 0x41AC9C1: Parrot_cx_schedule_sleep (scheduler.c:637) ==550== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==550== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==550== by 0x417C9B7: runops_int (interpreter.c:877) ==550== by 0x417D35D: runops (inter_run.c:104) ==550== by 0x417D5EA: runops_args (inter_run.c:230) ==550== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==550== by 0x41674B5: Parrot_runcode (embed.c:886) ==550== by 0x43760A1: imcc_run_pbc (main.c:788) ==550== by 0x4376A77: imcc_run (main.c:1069) ==550== by 0x80488FC: main (main.c:62) ==550== Old state: shared-readonly by threads #1, #2 ==550== New state: shared-modified by threads #1, #2 ==550== Reason: this thread, #1, holds no consistent locks ==550== Location 0x400B000 has never been protected by any lock ==550== ==550== Possible data race during write of size 4 at 0x400B004 ==550== at 0x41AC9F8: Parrot_cx_schedule_sleep (scheduler.c:638) ==550== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==550== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==550== by 0x417C9B7: runops_int (interpreter.c:877) ==550== by 0x417D35D: runops (inter_run.c:104) ==550== by 0x417D5EA: runops_args (inter_run.c:230) ==550== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==550== by 0x41674B5: Parrot_runcode (embed.c:886) ==550== by 0x43760A1: imcc_run_pbc (main.c:788) ==550== by 0x4376A77: imcc_run (main.c:1069) ==550== by 0x80488FC: main (main.c:62) ==550== Old state: shared-readonly by threads #1, #2 ==550== New state: shared-modified by threads #1, #2 ==550== Reason: this thread, #1, holds no consistent locks ==550== Location 0x400B004 has never been protected by any lock ==550== ==550== Process terminating with default action of signal 11 (SIGSEGV) ==550== Access not within mapped region at address 0x1EE00D80 ==550== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==550== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==550== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==550== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==550== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==550== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==550== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==550== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==550== by 0x417C9B7: runops_int (interpreter.c:877) ==550== by 0x417D35D: runops (inter_run.c:104) ==550== by 0x417D5EA: runops_args (inter_run.c:230) ==550== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==550== by 0x41674B5: Parrot_runcode (embed.c:886) ==550== by 0x43760A1: imcc_run_pbc (main.c:788) ==550== by 0x4376A77: imcc_run (main.c:1069) ==550== by 0x80488FC: main (main.c:62) ==550== ==550== Thread #1: Exiting thread still holds 1 lock ==550== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==550== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==550== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==550== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==550== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==550== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==550== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==550== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==550== by 0x417C9B7: runops_int (interpreter.c:877) ==550== by 0x417D35D: runops (inter_run.c:104) ==550== by 0x417D5EA: runops_args (inter_run.c:230) ==550== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==550== by 0x41674B5: Parrot_runcode (embed.c:886) ==550== by 0x43760A1: imcc_run_pbc (main.c:788) ==550== by 0x4376A77: imcc_run (main.c:1069) ==550== by 0x80488FC: main (main.c:62) ==550== ==550== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 7 from 2) t/pmc/timer_3.pasm ==25290== Helgrind, a thread error detector. ==25290== Copyright (C) 2007-2007, and GNU GPL'd, by OpenWorks LLP et al. ==25290== Using LibVEX rev 1804, a library for dynamic binary translation. ==25290== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==25290== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==25290== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==25290== For more details, rerun with: -v ==25290== ==25290== Thread #1 is the program's root thread ==25290== ==25290== Thread #2 was created ==25290== at 0x4D73A6C8: clone (in /lib/tls/i686/cmov/libc-2.6.1.so) ==25290== by 0x4009666: [EMAIL PROTECTED] (hg_intercepts.c:213) ==25290== by 0x41ABBEB: Parrot_cx_init_scheduler (scheduler.c:88) ==25290== by 0x417ACA7: make_interpreter (inter_create.c:260) ==25290== by 0x41665BE: Parrot_new (embed.c:85) ==25290== by 0x804884E: main (main.c:49) ==25290== ==25290== Possible data race during write of size 4 at 0x4609190 ==25290== at 0x4355DE3: Parrot_Scheduler_push_pmc (scheduler.pmc:136) ==25290== by 0x41AC175: Parrot_cx_schedule_task (scheduler.c:293) ==25290== by 0x42C6948: Parrot_Timer_set_integer_keyed_int (timer.pmc:283) ==25290== by 0x42C67DC: Parrot_Timer_init_pmc (timer.pmc:123) ==25290== by 0x41AAF0C: pmc_new_init (pmc.c:348) ==25290== by 0x4342298: Parrot_PMCProxy_instantiate (pmcproxy.pmc:161) ==25290== by 0x412171D: Parrot_new_p_sc_p (pmc.ops:108) ==25290== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==25290== by 0x417C9B7: runops_int (interpreter.c:877) ==25290== by 0x417D35D: runops (inter_run.c:104) ==25290== by 0x417D5EA: runops_args (inter_run.c:230) ==25290== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==25290== by 0x41674B5: Parrot_runcode (embed.c:886) ==25290== by 0x43760A1: imcc_run_pbc (main.c:788) ==25290== by 0x4376A77: imcc_run (main.c:1069) ==25290== by 0x80488FC: main (main.c:62) ==25290== Old state: shared-readonly by threads #1, #2 ==25290== New state: shared-modified by threads #1, #2 ==25290== Reason: this thread, #1, holds no consistent locks ==25290== Location 0x4609190 has never been protected by any lock ==25290== ==25290== Possible data race during write of size 4 at 0x4456028 ==25290== at 0x4172014: Parrot_alloc_context (register.c:507) ==25290== by 0x4171D87: Parrot_push_context (register.c:381) ==25290== by 0x4179B3B: Parrot_PCCINVOKE (inter_call.c:1864) ==25290== by 0x41ABF28: Parrot_cx_refresh_task_list (scheduler.c:182) ==25290== by 0x41ABC1C: Parrot_cx_handle_tasks (scheduler.c:113) ==25290== by 0x41ACADC: scheduler_runloop (scheduler.c:699) ==25290== by 0x4009751: mythread_wrapper (hg_intercepts.c:193) ==25290== by 0x4D7E546A: start_thread (in /lib/tls/i686/cmov/libpthread-2.6.1.so) ==25290== by 0x4D73A6DD: clone (in /lib/tls/i686/cmov/libc-2.6.1.so) ==25290== Old state: shared-readonly by threads #1, #2 ==25290== New state: shared-modified by threads #1, #2 ==25290== Reason: this thread, #2, holds no consistent locks ==25290== Location 0x4456028 has never been protected by any lock ==25290== ==25290== Possible data race during write of size 4 at 0x400B000 ==25290== at 0x41AC9C1: Parrot_cx_schedule_sleep (scheduler.c:637) ==25290== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==25290== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==25290== by 0x417C9B7: runops_int (interpreter.c:877) ==25290== by 0x417D35D: runops (inter_run.c:104) ==25290== by 0x417D5EA: runops_args (inter_run.c:230) ==25290== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==25290== by 0x41674B5: Parrot_runcode (embed.c:886) ==25290== by 0x43760A1: imcc_run_pbc (main.c:788) ==25290== by 0x4376A77: imcc_run (main.c:1069) ==25290== by 0x80488FC: main (main.c:62) ==25290== Old state: shared-readonly by threads #1, #2 ==25290== New state: shared-modified by threads #1, #2 ==25290== Reason: this thread, #1, holds no consistent locks ==25290== Location 0x400B000 has never been protected by any lock ==25290== ==25290== Possible data race during write of size 4 at 0x400B004 ==25290== at 0x41AC9F8: Parrot_cx_schedule_sleep (scheduler.c:638) ==25290== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==25290== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==25290== by 0x417C9B7: runops_int (interpreter.c:877) ==25290== by 0x417D35D: runops (inter_run.c:104) ==25290== by 0x417D5EA: runops_args (inter_run.c:230) ==25290== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==25290== by 0x41674B5: Parrot_runcode (embed.c:886) ==25290== by 0x43760A1: imcc_run_pbc (main.c:788) ==25290== by 0x4376A77: imcc_run (main.c:1069) ==25290== by 0x80488FC: main (main.c:62) ==25290== Old state: shared-readonly by threads #1, #2 ==25290== New state: shared-modified by threads #1, #2 ==25290== Reason: this thread, #1, holds no consistent locks ==25290== Location 0x400B004 has never been protected by any lock ==25290== ==25290== Process terminating with default action of signal 11 (SIGSEGV) ==25290== Access not within mapped region at address 0x24A827C0 ==25290== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==25290== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==25290== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==25290== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==25290== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==25290== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==25290== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==25290== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==25290== by 0x417C9B7: runops_int (interpreter.c:877) ==25290== by 0x417D35D: runops (inter_run.c:104) ==25290== by 0x417D5EA: runops_args (inter_run.c:230) ==25290== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==25290== by 0x41674B5: Parrot_runcode (embed.c:886) ==25290== by 0x43760A1: imcc_run_pbc (main.c:788) ==25290== by 0x4376A77: imcc_run (main.c:1069) ==25290== by 0x80488FC: main (main.c:62) ==25290== ==25290== Thread #1: Exiting thread still holds 1 lock ==25290== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==25290== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==25290== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==25290== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==25290== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==25290== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==25290== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==25290== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==25290== by 0x417C9B7: runops_int (interpreter.c:877) ==25290== by 0x417D35D: runops (inter_run.c:104) ==25290== by 0x417D5EA: runops_args (inter_run.c:230) ==25290== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==25290== by 0x41674B5: Parrot_runcode (embed.c:886) ==25290== by 0x43760A1: imcc_run_pbc (main.c:788) ==25290== by 0x4376A77: imcc_run (main.c:1069) ==25290== by 0x80488FC: main (main.c:62) ==25290== ==25290== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 10 from 3) t/pmc/nci_42.pasm ==580== Helgrind, a thread error detector. ==580== Copyright (C) 2007-2007, and GNU GPL'd, by OpenWorks LLP et al. ==580== Using LibVEX rev 1804, a library for dynamic binary translation. ==580== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==580== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==580== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==580== For more details, rerun with: -v ==580== ==580== Thread #1 is the program's root thread ==580== ==580== Thread #2 was created ==580== at 0x4D73A6C8: clone (in /lib/tls/i686/cmov/libc-2.6.1.so) ==580== by 0x4009666: [EMAIL PROTECTED] (hg_intercepts.c:213) ==580== by 0x41ABBEB: Parrot_cx_init_scheduler (scheduler.c:88) ==580== by 0x417ACA7: make_interpreter (inter_create.c:260) ==580== by 0x41665BE: Parrot_new (embed.c:85) ==580== by 0x804884E: main (main.c:49) ==580== ==580== Possible data race during write of size 4 at 0x4609190 ==580== at 0x4355DE3: Parrot_Scheduler_push_pmc (scheduler.pmc:136) ==580== by 0x41AC175: Parrot_cx_schedule_task (scheduler.c:293) ==580== by 0x41AC43A: Parrot_cx_schedule_callback (scheduler.c:386) ==580== by 0x417A5FC: callback_CD (inter_cb.c:258) ==580== by 0x417A4C5: verify_CD (inter_cb.c:200) ==580== by 0x417A7F3: Parrot_callback_C (inter_cb.c:373) ==580== by 0x443F308: nci_cb_C1 (nci_test.c:763) ==580== by 0x418F370: pcf_v_pP (nci.c:4027) ==580== by 0x42D2FCE: Parrot_NCI_invoke (nci.pmc:206) ==580== by 0x4109CBD: Parrot_invokecc_p (core.ops:431) ==580== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==580== by 0x417C9B7: runops_int (interpreter.c:877) ==580== by 0x417D35D: runops (inter_run.c:104) ==580== by 0x417D5EA: runops_args (inter_run.c:230) ==580== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==580== by 0x41674B5: Parrot_runcode (embed.c:886) ==580== by 0x43760A1: imcc_run_pbc (main.c:788) ==580== by 0x4376A77: imcc_run (main.c:1069) ==580== by 0x80488FC: main (main.c:62) ==580== Old state: shared-readonly by threads #1, #2 ==580== New state: shared-modified by threads #1, #2 ==580== Reason: this thread, #1, holds no consistent locks ==580== Location 0x4609190 has never been protected by any lock ==580== ==580== Possible data race during write of size 4 at 0x400B000 ==580== at 0x41AC9C1: Parrot_cx_schedule_sleep (scheduler.c:637) ==580== by 0x4130541: Parrot_sleep_nc (sys.ops:311) ==580== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==580== by 0x417C9B7: runops_int (interpreter.c:877) ==580== by 0x417D35D: runops (inter_run.c:104) ==580== by 0x417D5EA: runops_args (inter_run.c:230) ==580== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==580== by 0x41674B5: Parrot_runcode (embed.c:886) ==580== by 0x43760A1: imcc_run_pbc (main.c:788) ==580== by 0x4376A77: imcc_run (main.c:1069) ==580== by 0x80488FC: main (main.c:62) ==580== Old state: shared-readonly by threads #1, #2 ==580== New state: shared-modified by threads #1, #2 ==580== Reason: this thread, #1, holds no consistent locks ==580== Location 0x400B000 has never been protected by any lock ==580== ==580== Possible data race during write of size 4 at 0x400B004 ==580== at 0x41AC9F8: Parrot_cx_schedule_sleep (scheduler.c:638) ==580== by 0x4130541: Parrot_sleep_nc (sys.ops:311) ==580== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==580== by 0x417C9B7: runops_int (interpreter.c:877) ==580== by 0x417D35D: runops (inter_run.c:104) ==580== by 0x417D5EA: runops_args (inter_run.c:230) ==580== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==580== by 0x41674B5: Parrot_runcode (embed.c:886) ==580== by 0x43760A1: imcc_run_pbc (main.c:788) ==580== by 0x4376A77: imcc_run (main.c:1069) ==580== by 0x80488FC: main (main.c:62) ==580== Old state: shared-readonly by threads #1, #2 ==580== New state: shared-modified by threads #1, #2 ==580== Reason: this thread, #1, holds no consistent locks ==580== Location 0x400B004 has never been protected by any lock ==580== ==580== Process terminating with default action of signal 11 (SIGSEGV) ==580== Access not within mapped region at address 0x2E8D1D40 ==580== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==580== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==580== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==580== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==580== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==580== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==580== by 0x4130541: Parrot_sleep_nc (sys.ops:311) ==580== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==580== by 0x417C9B7: runops_int (interpreter.c:877) ==580== by 0x417D35D: runops (inter_run.c:104) ==580== by 0x417D5EA: runops_args (inter_run.c:230) ==580== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==580== by 0x41674B5: Parrot_runcode (embed.c:886) ==580== by 0x43760A1: imcc_run_pbc (main.c:788) ==580== by 0x4376A77: imcc_run (main.c:1069) ==580== by 0x80488FC: main (main.c:62) ==580== ==580== Thread #1: Exiting thread still holds 1 lock ==580== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==580== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==580== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==580== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==580== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==580== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==580== by 0x4130541: Parrot_sleep_nc (sys.ops:311) ==580== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==580== by 0x417C9B7: runops_int (interpreter.c:877) ==580== by 0x417D35D: runops (inter_run.c:104) ==580== by 0x417D5EA: runops_args (inter_run.c:230) ==580== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==580== by 0x41674B5: Parrot_runcode (embed.c:886) ==580== by 0x43760A1: imcc_run_pbc (main.c:788) ==580== by 0x4376A77: imcc_run (main.c:1069) ==580== by 0x80488FC: main (main.c:62) ==580== ==580== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 10 from 2) t/pmc/threads_2.pir ==638== Helgrind, a thread error detector. ==638== Copyright (C) 2007-2007, and GNU GPL'd, by OpenWorks LLP et al. ==638== Using LibVEX rev 1804, a library for dynamic binary translation. ==638== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==638== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==638== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==638== For more details, rerun with: -v ==638== ==638== Thread #1 is the program's root thread ==638== ==638== Thread #2 was created ==638== at 0x4D73A6C8: clone (in /lib/tls/i686/cmov/libc-2.6.1.so) ==638== by 0x4009666: [EMAIL PROTECTED] (hg_intercepts.c:213) ==638== by 0x41ABBEB: Parrot_cx_init_scheduler (scheduler.c:88) ==638== by 0x417ACA7: make_interpreter (inter_create.c:260) ==638== by 0x41665BE: Parrot_new (embed.c:85) ==638== by 0x804884E: main (main.c:49) ==638== ==638== Possible data race during write of size 4 at 0x4609190 ==638== at 0x41AC030: Parrot_cx_runloop_wake (scheduler.c:233) ==638== by 0x41AC967: Parrot_cx_schedule_sleep (scheduler.c:631) ==638== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==638== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==638== by 0x417C9B7: runops_int (interpreter.c:877) ==638== by 0x417D35D: runops (inter_run.c:104) ==638== by 0x417D5EA: runops_args (inter_run.c:230) ==638== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==638== by 0x41674B5: Parrot_runcode (embed.c:886) ==638== by 0x43760A1: imcc_run_pbc (main.c:788) ==638== by 0x4376A77: imcc_run (main.c:1069) ==638== by 0x80488FC: main (main.c:62) ==638== Old state: shared-readonly by threads #1, #2 ==638== New state: shared-modified by threads #1, #2 ==638== Reason: this thread, #1, holds no consistent locks ==638== Location 0x4609190 has never been protected by any lock ==638== ==638== Thread #3 was created ==638== at 0x4D73A6C8: clone (in /lib/tls/i686/cmov/libc-2.6.1.so) ==638== by 0x4009666: [EMAIL PROTECTED] (hg_intercepts.c:213) ==638== by 0x41B4772: pt_thread_run (thread.c:701) ==638== by 0x42C3D5C: do_thread_run (parrotthread.pmc:69) ==638== by 0x42C3E0B: do_thread_run_clone_default (parrotthread.pmc:82) ==638== by 0x4193F38: pcf_I_JOPxAT_ (nci.c:5585) ==638== by 0x42D2FCE: Parrot_NCI_invoke (nci.pmc:206) ==638== by 0x411CE4E: Parrot_callmethodcc_p_sc (object.ops:70) ==638== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==638== by 0x417C9B7: runops_int (interpreter.c:877) ==638== by 0x417D35D: runops (inter_run.c:104) ==638== by 0x417D5EA: runops_args (inter_run.c:230) ==638== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==638== by 0x41674B5: Parrot_runcode (embed.c:886) ==638== by 0x43760A1: imcc_run_pbc (main.c:788) ==638== by 0x4376A77: imcc_run (main.c:1069) ==638== by 0x80488FC: main (main.c:62) ==638== ==638== Possible data race during write of size 4 at 0x400B000 ==638== at 0x41AC9C1: Parrot_cx_schedule_sleep (scheduler.c:637) ==638== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==638== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==638== by 0x417C9B7: runops_int (interpreter.c:877) ==638== by 0x417D35D: runops (inter_run.c:104) ==638== by 0x417D5EA: runops_args (inter_run.c:230) ==638== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==638== by 0x41674B5: Parrot_runcode (embed.c:886) ==638== by 0x43760A1: imcc_run_pbc (main.c:788) ==638== by 0x4376A77: imcc_run (main.c:1069) ==638== by 0x80488FC: main (main.c:62) ==638== Old state: shared-readonly by threads #1, #2, #3 ==638== New state: shared-modified by threads #1, #2, #3 ==638== Reason: this thread, #1, holds no consistent locks ==638== Location 0x400B000 has never been protected by any lock ==638== ==638== Possible data race during write of size 4 at 0x400B004 ==638== at 0x41AC9F8: Parrot_cx_schedule_sleep (scheduler.c:638) ==638== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==638== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==638== by 0x417C9B7: runops_int (interpreter.c:877) ==638== by 0x417D35D: runops (inter_run.c:104) ==638== by 0x417D5EA: runops_args (inter_run.c:230) ==638== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==638== by 0x41674B5: Parrot_runcode (embed.c:886) ==638== by 0x43760A1: imcc_run_pbc (main.c:788) ==638== by 0x4376A77: imcc_run (main.c:1069) ==638== by 0x80488FC: main (main.c:62) ==638== Old state: shared-readonly by threads #1, #2, #3 ==638== New state: shared-modified by threads #1, #2, #3 ==638== Reason: this thread, #1, holds no consistent locks ==638== Location 0x400B004 has never been protected by any lock ==638== ==638== Process terminating with default action of signal 11 (SIGSEGV) ==638== Access not within mapped region at address 0x2B922CC0 ==638== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==638== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==638== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==638== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==638== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==638== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==638== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==638== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==638== by 0x417C9B7: runops_int (interpreter.c:877) ==638== by 0x417D35D: runops (inter_run.c:104) ==638== by 0x417D5EA: runops_args (inter_run.c:230) ==638== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==638== by 0x41674B5: Parrot_runcode (embed.c:886) ==638== by 0x43760A1: imcc_run_pbc (main.c:788) ==638== by 0x4376A77: imcc_run (main.c:1069) ==638== by 0x80488FC: main (main.c:62) ==638== ==638== Thread #1: Exiting thread still holds 1 lock ==638== at 0x4D65DB7C: strcmp (in /lib/ld-2.6.1.so) ==638== by 0x4D656C76: _dl_name_match_p (in /lib/ld-2.6.1.so) ==638== by 0x4D651E4E: do_lookup_x (in /lib/ld-2.6.1.so) ==638== by 0x4D652165: _dl_lookup_symbol_x (in /lib/ld-2.6.1.so) ==638== by 0x4D655E72: _dl_fixup (in /lib/ld-2.6.1.so) ==638== by 0x4D65B65F: _dl_runtime_resolve (in /lib/ld-2.6.1.so) ==638== by 0x413041C: Parrot_sleep_ic (sys.ops:301) ==638== by 0x41AB8F9: runops_slow_core (runops_cores.c:211) ==638== by 0x417C9B7: runops_int (interpreter.c:877) ==638== by 0x417D35D: runops (inter_run.c:104) ==638== by 0x417D5EA: runops_args (inter_run.c:230) ==638== by 0x417D707: Parrot_runops_fromc_args (inter_run.c:299) ==638== by 0x41674B5: Parrot_runcode (embed.c:886) ==638== by 0x43760A1: imcc_run_pbc (main.c:788) ==638== by 0x4376A77: imcc_run (main.c:1069) ==638== by 0x80488FC: main (main.c:62) ==638== ==638== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 7 from 2) -- c