Hello Alain,

the information you've provided helped me to locate where the
test is crashing. However, I still don't know why it crashes.
I stepped through the relevant parts of the code with GDB and
everything looks fine under both Linux and HP-UX. I've also
checked that no invalid memory is referenced, so by now my
vague guess is that something goes wrong in passing a va_list
argument through several functions.

If you could perhaps do the following:

a) Send me stack snapshots of frames #1 (Perl_sv_vcatpvfn)
   and #5 (ucpp_handle_define), as well as the contents of
   '*n' in frame #5:

> (gdb) bt
> #0  0xfe3f538 in strlen () at eval.c:88
> #1  0x10083d30 in Perl_sv_vcatpvfn ()
> #2  0x10085fe4 in Perl_sv_vcatpvf ()
> #3  0xfca1238 in ct_vscatf () at eval.c:88
> #4  0xfcbdf34 in ucpp_error () at eval.c:88
> #5  0xfce8018 in ucpp_handle_define () at eval.c:88
> #6  0xfcebe4c in define_macro () at eval.c:88
> #7  0xfcbf740 in ParseBuffer () at eval.c:88
> [...]

     (gdb) frame 1
     [...]
     (gdb) info locals
     [...]
     (gdb) frame 5
     [...]
     (gdb) info locals
     [...]
     (gdb) p *n
     [...]

b) Build and run the standalone 'ucpp' preprocessor:

     cd ctlib/ucpp
     make clean && make
     touch empty.h
     ./ucpp -DDEFINE=3 -DDEFINE=2 empty.h

   The last command will run the same code as my test script
   when it crashes. So this should either crash as well, or
   print

     macro 'DEFINE' redefined unidentically

c) Try to build and test an old Convert::Binary::C release,
   preferably version 0.06. It uses an older version of the
   ucpp-library.

BTW, I just found out that we have a PowerMac here, but
unfortunately without Linux. However, I've compiled the
module under Darwin and it built and tested just fine...

Thanks,

-- Marcus

Reply via email to