Ticket #1273 (closed todo: fixed)
Provide a parrot 'backtrace' with assertion failures.
Reported by: | Austin_Hastings | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | none | Version: | 1.7.0 |
Severity: | medium | Keywords: | |
Cc: | Language: | ||
Patch status: | Platform: |
Description
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.
Change History
Note: See
TracTickets for help on using
tickets.