[tlbuild] TeX Live 2010 Regression Test Failure on OpenBSD

Edd Barrett vext01 at gmail.com
Tue Jun 15 23:31:31 CEST 2010


On Tue, Jun 15, 2010 at 09:19:09PM +0100, Edd Barrett wrote:
> Convininently, when I initially reported it, I was using i386/gcc3.3.4. So it
> crashed then but also on amd64/gcc4.2.

Oh that is truly awful spelling. Sorry..

> I have not tried turning off the
> optimiser, but that will be my next course of action.

I still get this with -O0 with GCC 4.2.1 on amd64. Here is the stack:

---8<---
(gdb) run -ovp2ovf -verbose ../../../../texk/web2c/omegafonts/tests/OCherokee
tests/OCherokee tests/OCherokee
Starting program: /home/texlive/source/Work/texk/web2c/omegafonts/omfonts
-ovp2ovf -verbose ../../../../texk/web2c/omegafonts/tests/OCherokee
tests/OCherokee tests/OCherokee

Program received signal SIGBUS, Bus error.
0x0000000000403396 in set_char_tag (c=5092, tag=1)
    at ../../../../texk/web2c/omegafonts/char_routines.c:576
576         planes[c/PLANE][c%PLANE]->tag = tag;
(gdb) bt full
#0  0x0000000000403396 in set_char_tag (c=5092, tag=1)
    at ../../../../texk/web2c/omegafonts/char_routines.c:576
No locals.
#1  0x0000000000408f9d in set_label_command (c=5092)
    at ../../../../texk/web2c/omegafonts/ligkern_routines.c:72
No locals.
#2  0x000000000040e461 in yyparse () at pl-parser.y:258
        yym = 2
        yyn = 46
        yystate = 99
#3  0x000000000040b44d in main (argc=6, argv=0x7f7ffffe3210)
    at ../../../../texk/web2c/omegafonts/omfonts.c:305
        getopt_return_val = -1
        option_index = 0
---8<---

And here is the info Karl requested:
---8<---
(gdb) p c
$1 = 5092
(gdb) p c/0x10000
$2 = 0
(gdb) p planes[$]
$3 = (char_entry **) 0x20b65b000
(gdb) p c%0x10000
$4 = 5092
(gdb) p planes[c/0x10000][c%0x10000]
$5 = (char_entry *) 0xd0d0d0d0d0d0d0d0
(gdb) p *$
Cannot access memory at address 0xd0d0d0d0d0d0d0d0
---8<---

I can tell you what has happened here, 0xd0 is what freshly allocated buffers
are filled with in OpenBSD if you have the 'J' malloc flag enabled. I refer you
to the malloc(3) man page of OpenBSD:

---8<---
     J       ``Junk''.  Fill some junk into the area allocated.  Currently
             junk is bytes of 0xd0 when allocating; this is pronounced
             ``Duh''.  :-) Freed chunks are filled with 0xdf.
---8<---

Does this help? Looking at the code it looks like space for a pointer was
allocated, but no struct for it to point to was? Or the pointer was never
assigned if the struct was allocated?

I can't pretend I understand this code :)

-- 
Best Regards
Edd Barrett

http://www.theunixzoo.co.uk


More information about the tlbuild mailing list