On Thu Jul 17 09:31:27 2008, [EMAIL PROTECTED] wrote:
> On Thursday 17 July 2008 08:49:05 Will Coleda wrote:
> 
> > I committed a patch (r29559) that updates all the tcl.ops to be more
> > like the 'die' opcode in how the exception object is constructed and
> > created. Still segfaulting. As long as I'm in here, I'm going to
> > eliminate the forms of tcl_error that are now identical to 'die'.
> 
> Throw a backtrace this way (better if you can figure out what's null)
> and it
> might tickle out some solutions.
> 
> -- c
> 

It was in the original ticket, but here's an update with some more details.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6c828d0 (LWP 21358)]
0xb7c10627 in string_append (interp=0x804f040, a=0x2, b=0x820e4e4)
    at src/string.c:518
518         if (a == NULL || PObj_bufstart(a) == NULL)
(gdb) bt
#0  0xb7c10627 in string_append (interp=0x804f040, a=0x2, b=0x820e4e4)
    at src/string.c:518
#1  0xb7c35d2b in Parrot_concat_s_sc (cur_opcode=0xb7b237f4,
interp=0x804f040)
    at src/ops/string.ops:112
#2  0xb7cb8934 in runops_slow_core (interp=0x804f040, pc=0xb7b237f4)
    at src/runops_cores.c:221
<SNIP>

(gdb) l
513         const UINTVAL b_len = b ? string_length(interp, b) : 0;
514         if (!b_len)
515             return a;
516
517         /* Is A real? */
518         if (a == NULL || PObj_bufstart(a) == NULL)
519             return string_copy(interp, b);
520
521         saneify_string(a);
522         saneify_string(b);
(gdb) p *b
$4 = {cache = {_b = {_bufstart = 0xb6c62890, _buflen = 4}, _ptrs = {
      _struct_val = 0xb6c62890, _pmc_val = 0x4}, _i = {_int_val =
-1228527472,
      _int_val2 = 4}, _num_val = 1.0003005735938968e-313,
    _string_val = 0xb6c62890}, flags = 397568, strstart = 0xb6c62890 "\n",
  bufused = 1, strlen = 1, hashval = 0, encoding = 0x806fd88,
  charset = 0x8071328}
(gdb) p *a
Cannot access memory at address 0x2

-- 
Will "Coke" Coleda

Reply via email to