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 >