Hi Hilmar
Thanks for the trace. I'm traveling now so I will need to test this. At home I only have access to amd64, but I'll test it on other architectures too.
My guess is a behavioural change; the compiler warnings have been around for quite a while and it's time to revisit some of the variable types.
Cheers
Am 19.10.2016 um 17:20 schrieb Danai SAE-HAN (韓達耐):
Hi all,
It looks like a problem with the wftodm binary. This is an important pieceI *think* I can reproduce the bug.
in the creation of the fonts.
I will only have access to my PC next week Thursday (27 October 2016) to
check the C source code and replicate it on amd64. Please bear with me for
a while.
Here is the gdb backtrace:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S: No such file or directory.
(gdb) bt
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
#1 0x00002ba08dfdbda3 in _IO_vfprintf_internal (s=s@entry=0x7ffd926eb3f0,
format=<optimized out>, format@entry=0x5643d866b22e "/StdHW [ %s ] |-\n",
ap=ap@entry=0x7ffd926eb518) at vfprintf.c:1637
#2 0x00002ba08dffcacb in __IO_vsprintf (
string=0x7ffd926eb620 "/StdHW [ re{16 16} |-\n",
format=0x5643d866b22e "/StdHW [ %s ] |-\n", args=args@entry=0x7ffd926eb518)
at iovsprintf.c:42
#3 0x00002ba08dfe2327 in __sprintf (s=<optimized out>, format=<optimized out>)
at sprintf.c:32
#4 0x00005643d866a8e2 in e_printf (form=<optimized out>, i0=<optimized out>,
i1=<optimized out>, i2=<optimized out>, i3=<optimized out>,
i4=<optimized out>, i5=1936353124, i6=-1838284703, i7=0, i8=-1909291776,
i9=0) at wftodm.c:306
#5 0x00005643d866aa77 in output_pfa (file=1) at wftodm.c:255
#6 0x00005643d8669d3a in main (ac=<optimized out>, ag=<optimized out>)
at wftodm.c:158
And here is the function e_printf() in question:
e_printf(form,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9)
char *form;
{
int len,i;
unsigned char buf[4096];
sprintf(buf,form,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9);
len=strlen(buf);
for(i=0;i<len;i++)
e_putchar(buf[i]);
}
In line 255 (function output_pfa) it is called like this
e_printf("/StdHW [ %s ] |-\n",StdHW);
I /guess/ there is a thinks in string processing. Sorry, I don't have enough knowledge in C to help here. Does that ring anywhere a bell on your side? Is the problem reproducible e.g. in i386?
Hilmar
--
http://www.hilmar-preusse.de.vu/ #206401 http://counter.li.org