Comment 12 for bug 542357

Revision history for this message
In , Bryce Harrington (bryce) wrote :

Forwarding this issue from Ubuntu reporter Arun S L:
https://bugs.edge.launchpad.net/ubuntu/+source/xorg-server/+bug/542357

[Problem]
A crash is encountered in the routine FontFileAddFontFile()

[Original Report]
xorg crashes with 9.10 and ubuntu-bug and uing ppa is also not working. Says network fault in the only shell available. But apt-get is working.

Backtrace:
0: /usr/bin/X (xorg_backtrace+0x3b) [0x80e880b]
1: /usr/bin/X (0x8048000+0x61aed) [0x80a9aed]
2: (vdso) (__kernel_rt_sigreturn+0x0) [0x730410]
3: /usr/lib/libXfont.so.1 (FontFileAddFontFile+0xff) [0x5616ff]
4: /usr/lib/libXfont.so.1 (FontFileReadDirectory+0x2ef) [0x55fe2f]
5: /usr/lib/libXfont.so.1 (FontFileInitFPE+0x2f) [0x56327f]
6: /usr/bin/X (0x8048000+0x2ca23) [0x8074a23]
7: /usr/bin/X (SetDefaultFontPath+0x100) [0x8074cb0]
8: /usr/bin/X (0x8048000+0x1ec2e) [0x8066c2e]
9: /lib/tls/i686/cmov/libc.so.6 (__libc_start_main+0xe6) [0x7e0bd6]
10: /usr/bin/X (0x8048000+0x1e921) [0x8066921]
Illegal instruction at address 0x8d9419

Caught signal 4 (Illegal instruction). Server aborting

00:00.0 Host bridge [0600]: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge [8086:7190] (rev 01)
        Subsystem: VMware Device [15ad:1976]
00:0f.0 VGA compatible controller [0300]: VMware SVGA II Adapter [15ad:0405]
        Subsystem: VMware SVGA II Adapter [15ad:0405]

some more debug info about the instruction causing fault: its palignr!!!

(gdb) display/i $pc-5
6: x/i $pc-5
   0x279414: and %ah,0xf(%esi)
(gdb) display/i $pc-4
7: x/i $pc-4
   0x279415: movdqa %xmm3,%xmm4
(gdb) display/i $pc-3
8: x/i $pc-3
   0x279416: movq %mm3,%mm4
(gdb) display/i $pc-2
9: x/i $pc-2
   0x279417: outsl %ds:(%esi),(%dx)
(gdb) display/i $pc-1
10: x/i $pc-1
   0x279418: jecxz 0x279480
(gdb) display/i $pc
11: x/i $pc
=> 0x279419: palignr $0x4,%xmm2,%xmm3
(gdb) display/i $pc+1
12: x/i $pc+1
   0x27941a: palignr $0x4,%mm2,%mm3
(gdb) display/i $pc+2
13: x/i $pc+2
   0x27941b: cmp (%edi),%cl
(gdb) display/i $pc+3
14: x/i $pc+3
   0x27941c: pminub (%esi,%eiz,2),%mm0
(gdb) display/i $pc+4
15: x/i $pc+4
   0x27941d: fiaddl (%esi,%eiz,2)
(gdb) display/i $pc+5
16: x/i $pc+5
   0x27941e: add $0x66,%al

bt with source details...

Program received signal SIGILL, Illegal instruction.
0x003ae419 in ?? () from /lib/tls/i686/cmov/libc.so.6
(gdb) bt
#0 0x003ae419 in ?? () from /lib/tls/i686/cmov/libc.so.6
#1 0xbfffee8c in ?? ()
#2 0x001696ff in FontFileAddFontFile (dir=0x8245788,
    fontName=0xbfffee8c "-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1", fileName=0xbffff28c "10x20-ISO8859-1.pcf.gz")
    at ../../../src/fontfile/fontdir.c:691
#3 0x00167e2f in FontFileReadDirectory (
    directory=0x8242ed0 "/usr/share/fonts/X11/misc", pdir=0xbffff6cc)
    at ../../../src/fontfile/dirfile.c:138
#4 0x0016b27f in FontFileInitFPE (fpe=0x8245608)
    at ../../../src/fontfile/fontfile.c:99
#5 0x080723c3 in SetFontPathElements (npaths=<value optimized out>,
    paths=<value optimized out>, bad=0xbffff79c, persist=1)
    at ../../dix/dixfonts.c:1753
#6 0x08072680 in SetDefaultFontPath (
    path=0x8215bb0 "/usr/share/fonts/X11/misc,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x"...)
    at ../../dix/dixfonts.c:1866
#7 0x08066c2e in main (argc=1, argv=0xbffff8b4, envp=0xbffff8bc)
    at ../../dix/main.c:225
(gdb)

some more insight after painfully compiling the libc source also, took more than 3GB of downloading and compilation. somehow managed..

#0 __memcpy_ssse3 () at ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:532
#1 0xbfffee8c in ?? ()
#2 0x001696ff in FontFileAddFontFile (dir=0x8245788,
    fontName=0xbfffee8c "-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1", fileName=0xbffff28c "10x20-ISO8859-1.pcf.gz")
    at ../../../src/fontfile/fontdir.c:691
#3 0x00167e2f in FontFileReadDirectory (
    directory=0x8242ed0 "/usr/share/fonts/X11/misc", pdir=0xbffff6cc)
    at ../../../src/fontfile/dirfile.c:138
#4 0x0016b27f in FontFileInitFPE (fpe=0x8245608)
    at ../../../src/fontfile/fontfile.c:99
#5 0x080723c3 in SetFontPathElements (npaths=<value optimized out>,
    paths=<value optimized out>, bad=0xbffff79c, persist=1)
    at ../../dix/dixfonts.c:1753
#6 0x08072680 in SetDefaultFontPath (
    path=0x8215bb0 "/usr/share/fonts/X11/misc,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x"...)
    at ../../dix/dixfonts.c:1866
#7 0x08066c2e in main (argc=1, argv=0xbffff8b4, envp=0xbffff8bc)
    at ../../dix/main.c:225
(gdb)

portion of code from the file sysdeps/i386/i686/multiarch/memcpy-ssse3.S arround line 532

L(shl_4_loop):

        movdqa 16(%eax, %edi), %xmm2
        sub $32, %ecx
        movdqa 32(%eax, %edi), %xmm3
        movdqa %xmm3, %xmm4
        palignr $4, %xmm2, %xmm3
        palignr $4, %xmm1, %xmm2
        lea 32(%edi), %edi
        movdqa %xmm2, -32(%edx, %edi)
        movdqa %xmm3, -16(%edx, %edi)

        jl L(shl_4_end)

        movdqa 16(%eax, %edi), %xmm2
        sub $32, %ecx
        movdqa 32(%eax, %edi), %xmm3
        movdqa %xmm3, %xmm1

Can anyone help me from here?

finally did one tweek to get it working...

:-)

moved /lib/tls/i686/cmov/libc.so.6 out

ldd picked /lib/libc.so.6 and bingo... everything is working fine now...

Please let me know if there is a factual solution down the line.