ACC SHELL
XFree86 produces error reports very much like the kernel output. For
example, this is a sample XFree86 report.
eip: 080b3cdc eflags: 00013286
eax: 082e4268 ebx: caaee805 ecx: 000000ed edx: 0828ffd8
esi: 082e41b0 edi: 082ae628 ebp: bffffa4c esp: bffffa14
Stack: 08348794 082e41b0 bffffa4c 0809c4be 082ae628 02400014 c0000001 00000002
08348794 082e41b0 082ae628 05bf64a0 08348794 02000000 bffffa7c 080b43bc
082e41b0 000000ed 000000ed 00000004 082ae628 00000000 bffffa94 00000000
00000000 082906a8 bffffcac 080968d3 082ae628 00000020 bffffcac 0809695b
Call Trace: 0809c4be 080b43bc 080968d3 0809695b 080783b1 0806f7a5 080ba1e7
080a53bd 080a5628 080a5314 0815f734 08096848 080a51e2 080a51fb 081b844c
0806b1b0 0806b1d1 080a4d58 081b844c 0806b1b0
Code: 39 4b 04 75 ef 85 db 74 76 85 d2 75 1a 8b 56 78 8b 03 89 42
All you need is a small adjustment to the EIP line (ksymoops expects
kernel format with a bracketed address) plus something that looks like
a System.map but is actually generated from the failing program and you
can use ksymoops on XFree86 programs.
Generate the map by
objdump -T /usr/X11R6/bin/failing_program | \
fgrep -v '*UND*' | \
awk '{print $1, $2, $NF}' > map
Feed the oops with an adjusted EIP plus the map to ksymoops and send
the decoded result to the person responsible for the failing program.
sed -e 's/\(eip: *\)\([^ ]*\)/\1[<\2>]/' < oops | ksymoops -VKLO -m map
ACC SHELL 2018