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

On 19 Oct 2016 22:01, "Hilmar Preuße" <hill...@web.de> wrote:

> 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 piece
>> 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.
>>
>> I *think* I can reproduce the bug.
>
> 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
>

Reply via email to