Comment 31 for bug 1608180

Revision history for this message
Alexey Dokuchaev (danfe) wrote :

OK, if my assembly is correct, there should be something like this shortly after the faulty instruction.

    -8<-
   e: 66 0f 6e e1 movd %ecx,%xmm4
  12: 66 0f d2 d4 psrld %xmm4,%xmm2
  16: 66 45 0f ef c0 pxor %xmm8,%xmm8
  1b: 66 0f 38 3d d3 pmaxsd %xmm3,%xmm2
  20: 48 63 c1 movslq %ecx,%rax
  23: 66 0f 6e a4 87 08 01 movd 0x108(%rdi,%rax,4),%xmm4
    -8<-

(This is copy-paste of that code you quited run through as(1)). I'd like to know which file this SIMD code comes from. Let's pick the last line above (just as example, you might want to adjust it) and do some grepping.

First, quick sanity check that core dump itself contains this code (it should):

$ perl -e 'open(F, "<:raw", $ARGV[0]) or die $! ; while(<F>) { if (/\x66\x0f\x6e\xa4\x87\x08\x01/) { print "found ($ARGV[0])\n"; exit; } }' stellarium.core

If it does not print "found (stellarium.core)" then I screwed up somewhere or need more information.

If it does, then we can try to find which executable file or library contains this code:

$ perl -e 'open(F, "<:raw", $ARGV[0]) or die $! ; while(<F>) { if (/\x66\x0f\x6e\xa4\x87\x08\x01/) { print "found ($ARGV[0])\n"; exit; } }' /usr/local/bin/stellarium

$ find /usr/local/lib /usr/lib /lib -type f -exec perl -e 'open(F, "<:raw", $ARGV[0]) or die $! ; while(<F>) { if (/\x66\x0f\x6e\xa4\x87\x08\x01/) { print "found ($ARGV[0])\n"; exit; } }' '{}' \;

Note that the last command will most likely take considerable amount of time to run since we're using not the most efficient binary string search here.