# New Ticket Created by  Jarkko Hietaniemi 
# Please include the string:  [perl #30997]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=30997 >


The PDB labels are somehow b0rked in tru64/alpha:

(make pdb)

kosh:/tmp/jhi/parrot ; ./parrot -o foo.pbc t/op/basic_1.pasm
kosh:/tmp/jhi/parrot ; ./pdb foo.pbc
Parrot Debugger 0.0.2

(pdb) l
1  zsh: 437293 segmentation fault (core dumped)  ./pdb foo.pbc
kosh:/tmp/jhi/parrot ; dbx ./pdb core.pdb.kosh.0
dbx version 5.1
Type 'help' for help.
Core file created by program "pdb"

thread 0xf signal Segmentation fault at >*[__nxm_thread_kill,
0x3ff805c1ac8]   ret      zero, (ra), 1
(dbx) where
>  0 __nxm_thread_kill(0xb, 0x3ffc01b6000, 0x3ff805ba108, 0x3ffc01b6000,
0x3ffc01b6000) [0x3ff805c1ac8]
   1 pthread_kill(0x0, 0x11fffb438, 0x0, 0x11fffc010, 0x3ff00000001)
[0x3ff805ba120]
   2 (unknown)() [0x3ff805c62a8]
   3 (unknown)() [0x3ff80633994]
   4 exc_raise_signal_exception(0xb0ffe0003, 0x86, 0x0, 0x1200d04a4,
0x1) [0x3ff80633d80]
   5 PDB_list(interpreter = 0x1400c4e00, command = 0x1403cb5c1 = "")
["src/debug.c":1973, 0x1200d04a4]
   6 PDB_run_command(interpreter = 0x1400c4e00, command = 0x1403cb5c1 =
"") ["src/debug.c":348, 0x1200cc370]
   7 Parrot_debug(interpreter = 0x1400c4e00, argc = 1, argv =
0x11fffc020) ["src/embed.c":766, 0x1200c9c10]
   8 main(argc = 2, argv = 0x11fffc018) ["src/pdb.c":158, 0x1200c8850]
(dbx) up
(dbx)
up
(dbx)
up
(dbx)
up
(dbx)
up
PDB_list:1973  PIO_eprintf(interpreter, "L%li:\t",line->label->number);
(dbx) p *line
struct {
    opcode = 0x822120
    source_offset = 0
    number = 1
    label = 0x6d73
    next = 0x14039f7f0
}
(dbx) l
  1970          PIO_eprintf(interpreter, "%li  ",pdb->file->list_line + i);
  1971          /* If it has a label print it */
  1972          if (line->label)
> 1973              PIO_eprintf(interpreter, "L%li:\t",line->label->number);
  1974          c = pdb->file->source + line->source_offset;
  1975          while (*c != '\n')
  1976              PIO_eprintf(interpreter, "%c",*(c++));
  1977          PIO_eprintf(interpreter, "\n");
  1978          line = line->next;
  1979          if (i++ == n)
  1980              break;
  1981      }
  1982
  1983      if (--i != n)
  1984          pdb->file->list_line = 0;
  1985      else
  1986          pdb->file->list_line += n;
  1987  }
  1988
  1989  /*
(dbx)

The line->label is an impossible pointer, so deferencing causes promptly
a bus error.

-- 
Jarkko Hietaniemi <[EMAIL PROTECTED]> http://www.iki.fi/jhi/ "There is this special
biologist word we use for 'stable'.  It is 'dead'." -- Jack Cohen

Reply via email to