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

Reply via email to