#1273: Provide a parrot 'backtrace' with assertion failures.
-----------------------------+----------------------------------------------
 Reporter:  Austin_Hastings  |        Type:  todo  
   Status:  new              |    Priority:  normal
Milestone:                   |   Component:  none  
  Version:  1.7.0            |    Severity:  medium
 Keywords:                   |        Lang:        
    Patch:                   |    Platform:        
-----------------------------+----------------------------------------------
 When an assertion fails, a C stack trace is provided which is not
 particularly valuable for determining how to reproduce the problem (short
 of re-running whatever enormous codeset produces the first failure). For
 example:
 {{{
 src/string/api.c:549: failed assertion '(b)->charset'
 Backtrace - Obtained 16 stack frames (max trace depth is 32).
 /usr/local/lib/libparrot.so.1.7.0 [0x400d3d62]
 /usr/local/lib/libparrot.so.1.7.0(Parrot_confess+0x9a) [0x400d3eca]
 /usr/local/lib/libparrot.so.1.7.0(Parrot_str_append+0x17c) [0x4005477c]
 /usr/local/lib/libparrot.so.1.7.0(Parrot_str_join+0x160) [0x40054cf0]
 /usr/local/lib/libparrot.so.1.7.0 [0x4007985f]
 /usr/local/lib/libparrot.so.1.7.0 [0x4011f34e]
 /usr/local/lib/libparrot.so.1.7.0 [0x4011d8af]
 /usr/local/lib/libparrot.so.1.7.0 [0x400f589f]
 /usr/local/lib/libparrot.so.1.7.0 [0x400f5cb0]
 /usr/local/lib/libparrot.so.1.7.0(Parrot_runops_fromc_args+0xc6)
 [0x400f6a56]
 /usr/local/lib/libparrot.so.1.7.0(Parrot_runcode+0x15e) [0x400d09ce]
 /usr/local/lib/libparrot.so.1.7.0 [0x402bf313]
 /usr/local/lib/libparrot.so.1.7.0(imcc_run+0x39c) [0x402bff0c]
 /usr/local/bin/parrot [0x8048938]
 /lib/libc.so.6(__libc_start_main+0xe5) [0x403c6775]
 /usr/local/bin/parrot [0x80487d1]
 make: *** [test-attributes] Aborted (core dumped)
 }}}

 I propose that the assertion-failure code should be extended to also
 provide a "backtrace" (a la the `backtrace` opcode) of the Parrot stack,
 so that developers can find the particular areas of their code that are
 experiencing the failure.

 Cotto suggested in IRC that the Parrot_confess routine would be the place
 to make this change.

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/1273>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to