Ticket #1783 (closed bug: fixed)

Opened 4 years ago

Last modified 4 years ago

t/compilers/pge/p5regex/p5rx.t and t/compilers/pge/perl6regex/01-regex.t: test failures on Darwin/PPC since r48918

Reported by: jkeenan Owned by:
Priority: normal Milestone:
Component: PGE Version: 2.7.0
Severity: medium Keywords:
Cc: plobsing, chromatic Language:
Patch status: Platform: darwin

Description

In the last 24 hours, two test files have begun to experience failures on Darwin/PPC. The failures emerged somewhere between r48898 and r48924.

[parrot] 506 $ prove t/compilers/pge/p5regex/p5rx.t t/compilers/pge/perl6regex/01
t/compilers/pge/p5regex/p5rx.t .. 232/960 
src/gc/api.c:169: failed assertion 'PObj_is_PMC_TEST(obj)'
t/compilers/pge/p5regex/p5rx.t .. Failed 727/960 subtests 
        (less 8 skipped subtests: 225 okay)
Cannot determine source for t/compilers/pge/perl6regex/01 at 
  /usr/local/lib/perl5/5.12.0/App/Prove.pm line 496

Attachments

48898.48924.diff Download (151.1 KB) - added by jkeenan 4 years ago.
Changes to trunk over duration in which failures emerged on Darwin/PPC

Change History

Changed 4 years ago by jkeenan

Changes to trunk over duration in which failures emerged on Darwin/PPC

  Changed 4 years ago by jkeenan

  • cc plobsing added

plobsing suggests possible relationship to issue in TT #1781.

follow-ups: ↓ 3 ↓ 4   Changed 4 years ago by chromatic

On Friday 10 September 2010 at 19:04, Parrot  wrote:

>  In the last 24 hours, two test files have begun to experience failures on
>  Darwin/PPC.  The failures emerged somewhere between r48898 and r48924.
>  {{{
>  [parrot] 506 $ prove t/compilers/pge/p5regex/p5rx.t
>  t/compilers/pge/perl6regex/01
>  t/compilers/pge/p5regex/p5rx.t .. 232/960
>  src/gc/api.c:169: failed assertion 'PObj_is_PMC_TEST(obj)'
>  t/compilers/pge/p5regex/p5rx.t .. Failed 727/960 subtests
>          (less 8 skipped subtests: 225 okay)
>  Cannot determine source for t/compilers/pge/perl6regex/01 at
>    /usr/local/lib/perl5/5.12.0/App/Prove.pm line 496
>  }}}

If r48927 doesn't fix it, r48918 is likely the culprit.  If you can get a 
backtrace of the assertion, I can fix it.

-- c

in reply to: ↑ 2   Changed 4 years ago by jkeenan

Replying to chromatic:

1. Problem still exists on Darwin/PPC at r48930. For reference, I configure as follows:

CC="/usr/bin/gcc"
CX="/usr/bin/g++"
perl Configure.pl --cc="$CC" --cxx="$CX" --link="$CX" --ld="$CX"

2. I don't know how to get a backtrace of the failed assertion. These tests don't seem to be creating file that I could run through gdb. (But I'm not very knowledgeable here.)

3. In the case of the second file that's failing, the tests collapse at the next-to-last test in t/compilers/pge/perl6regex/rx_quantifiers, so that we never get to t/compilers/pge/perl6regex/rx_subrules or t/compilers/pge/perl6regex/rx_syntax.

in reply to: ↑ 2   Changed 4 years ago by jkeenan

Replying to chromatic:

If r48927 doesn't fix it, r48918 is likely the culprit.

r48918 does appear to be the culprit. On Darwin/PPC, I was able to build at r48917 and have those 2 files PASS. At r48918, make ended more problematically and I got these results:

src/glut_nci_thunks.c:6129: warning: no previous prototype for 
  'Parrot_glut_nci_loader'
/usr/bin/g++ -undefined dynamic_lookup -bundle -L/usr/local/lib 
  -L/opt/local/lib -L/Users/jimk/work/48918/blib/lib -L/sw/lib  \
    -o runtime/parrot/dynext/libglutcb.bundle 
      src/glut_callbacks.o src/glut_nci_thunks.o \
    -L/Users/jimk/work/48918/blib/lib -lparrot  -lm -lgmp -lreadline 
  -lintl -framework OpenGL -framework GLUT
./parrot_nci_thunk_gen --dynext --no-warn-dups \
--output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
src/gc/api.c:205: failed assertion 'PObj_is_string_TEST(obj)'
make: *** [src/extra_nci_thunks.c] Error 134
Finished
t/compilers/pge/p5regex/p5rx.t ......... error:imcc:loadlib 
  directive could not find library `io_ops'
        in file 't/compilers/pge/p5regex/p5rx.t' line 54
t/compilers/pge/p5regex/p5rx.t ......... 
  Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 
t/compilers/pge/perl6regex/01-regex.t .. error:imcc:loadlib 
  directive could not find library `io_ops'
        in file 't/compilers/pge/perl6regex/01-regex.t' line 54
t/compilers/pge/perl6regex/01-regex.t .. 
  Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 

Test Summary Report
-------------------
t/compilers/pge/p5regex/p5rx.t       (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/compilers/pge/perl6regex/01-regex.t (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
Files=2, Tests=0,  1 wallclock secs 
  ( 0.10 usr  0.05 sys +  0.04 cusr  0.06 csys =  0.25 CPU)
Result: FAIL

  Changed 4 years ago by jkeenan

  • summary changed from t/compilers/pge/p5regex/p5rx.t and t/compilers/pge/perl6regex/01-regex.t: new test failures on Darwin/PPC to t/compilers/pge/p5regex/p5rx.t and t/compilers/pge/perl6regex/01-regex.t: test failures on Darwin/PPC since r48918

  Changed 4 years ago by jkeenan

  • cc chromatic added

  Changed 4 years ago by jkeenan

As a  stroll thru #parrot will show, this is one of those cases where, when we run the offending file thru gdb, the tests complete without incident. But when we run them thru perl t/harness or prove we get the failures discussed above.

kid51

  Changed 4 years ago by jkeenan

  • owner pmichaud deleted

I think somehow I added pmichaud as owner by accident when I created the ticket. So I'm clearing that value.

  Changed 4 years ago by jkeenan

plobsing++ suggested this patch for diagnostic purposes:

Index: src/gc/api.c
===================================================================
--- src/gc/api.c	(revision 48927)
+++ src/gc/api.c	(working copy)
@@ -166,7 +166,7 @@
 {
     ASSERT_ARGS(Parrot_gc_mark_PMC_alive_fun)
     if (!PMC_IS_NULL(obj)) {
-        PARROT_ASSERT(PObj_is_PMC_TEST(obj));
+        while (!PObj_is_PMC_TEST(obj));
 
         if (PObj_is_live_or_free_TESTALL(obj))
             return;

... then called make. The re-build halted at:

Linked: parrot_nci_thunk_gen ./parrot_nci_thunk_gen --loader-name=Parrot_glut_nci_loader --loader-name=Parrot_glut_nci_loader --loader-storage-class=PARROT_DYNEXT_EXPORT --output=src/glut_nci_thunks.c <src/glut_nci_thunks.nci

plobsing then instructed me in how to attach a PID to a gdb [program] call, which enabled me then to get this backtrace:

Attaching to program: `/Users/jimk/work/parrot/parrot_nci_thunk_gen', process 11663.
Reading symbols for shared libraries .+.......++.+. done
0x0207e7c0 in Parrot_gc_mark_PMC_alive_fun (interp=0x600c30, obj=0x1065de0) at src/gc/api.c:169
169             while (!PObj_is_PMC_TEST(obj));


(gdb) bt       
#0  0x0207e7c0 in Parrot_gc_mark_PMC_alive_fun (interp=0x600c30, obj=0x1065de0) at src/gc/api.c:169
#1  0x02087208 in trace_mem_block (interp=0x600c30, mem_pools=0x600d90, lo_var_ptr=3221222688, hi_var_ptr=3221215292) at src/gc/system.c:469
#2  0x02087380 in trace_system_stack (interp=0x600c30, mem_pools=0x600d90) at src/gc/system.c:257
#3  0x02087444 in trace_system_areas (interp=0x600c30, mem_pools=0x600d90) at src/gc/system.c:227
#4  0x0208546c in Parrot_gc_trace_root (interp=0x600c30, mem_pools=0x600d90, trace=GC_TRACE_FULL) at src/gc/mark_sweep.c:226
#5  0x020830a8 in gc_ms_trace_active_PMCs (interp=0x600c30, trace=GC_TRACE_FULL) at src/gc/gc_ms.c:1467
#6  0x02083244 in gc_ms_mark_and_sweep (interp=0x600c30, flags=2) at src/gc/gc_ms.c:552
#7  0x0207fda0 in Parrot_gc_mark_and_sweep (interp=0x600c30, flags=2) at src/gc/api.c:690
#8  0x0208362c in gc_ms_more_traceable_objects (interp=0x600c30, mem_pools=0x600d90, pool=0x600e50) at src/gc/gc_ms.c:1560
#9  0x0208393c in gc_ms_get_free_object (interp=0x600c30, mem_pools=0x600d90, pool=0x600e50) at src/gc/gc_ms.c:1643
#10 0x020813f8 in gc_ms_allocate_string_header (interp=0x600c30, flags=0) at src/gc/gc_ms.c:732
#11 0x0207f270 in Parrot_gc_new_string_header (interp=0x600c30, flags=0) at src/gc/api.c:377
#12 0x020099ec in Parrot_str_new_noinit (interp=0x600c30, capacity=274) at src/string/api.c:207
#13 0x0200a8c4 in Parrot_str_concat (interp=0x600c30, a=0x10d9fc0, b=0x10d9fe0) at src/string/api.c:450
#14 0x020e7300 in Parrot_sprintf_format (interp=0x600c30, pat=0x5f67c0, obj=0xbffff1ac) at src/spf_render.c:436
#15 0x0209ea10 in Parrot_psprintf (interp=0x600c30, pat=0x5f67c0, ary=0x7c9770) at src/misc.c:243
#16 0x0204a8d8 in Parrot_sprintf_s_s_p (cur_opcode=0x304ef18, interp=0x600c30) at src/ops/core_ops.c:22835
#17 0x020e1338 in runops_fast_core (interp=0x600c30, runcore_unused=0x60e530, pc=0x304ef18) at src/runcore/cores.c:514
#18 0x020e05fc in runops_int (interp=0x600c30, offset=6581) at src/runcore/main.c:219
#19 0x02094f34 in runops (interp=0x600c30, offs=0) at src/call/ops.c:127
#20 0x0208db38 in Parrot_pcc_invoke_from_sig_object (interp=0x600c30, sub_obj=0x72a0e0, call_object=0x72aa60) at src/call/pcc.c:325
#21 0x02073e0c in Parrot_ext_call (interp=0x600c30, sub_pmc=0x72a0e0, signature=0x223aa1c "P->") at src/extend.c:322
#22 0x02070278 in Parrot_runcode (interp=0x600c30, argc=4, argv=0xbffff5ec) at src/embed.c:812
#23 0x00002f84 in main ()

  Changed 4 years ago by nwellnhof

"print/x obj->flags" in gdb would be interesting.

  Changed 4 years ago by jkeenan

  • status changed from new to closed
  • resolution set to fixed

Well, whatever happened between r48930 and r48940 appears to have corrected the problem:

[parrot] 508 $ prove t/compilers/pge/p5regex/*.t
t/compilers/pge/p5regex/p5rx.t .. ok       

[parrot] 509 $ prove t/compilers/pge/perl6regex/*.t
t/compilers/pge/perl6regex/01-regex.t .. ok     
t/compilers/pge/perl6regex/context.t ... ok     
All tests successful.

And make test once again PASS on Darwin/PPC.

Closing ticket. Thank you very much.

kid51

  Changed 4 years ago by coke

This was a duplicate of TT #1779.

Note: See TracTickets for help on using tickets.