dns-terror (fastresolve-2.10_5) core dump na FreeBSD 10.x
Miroslav Lachman
000.fbsd at quip.cz
Thu Feb 25 18:33:34 CET 2016
Dan Lukes wrote on 02/25/2016 17:59:
> Miroslav Lachman wrote:
>> Konecne jsem se dostal k tomu, abych si to zkompiloval v poudriere s
>> WITH_DEBUG=yes. Nainstaloval na zkusebni stroj a ted jsem z core dostal
>> tohle
>
>> (gdb) bt
>> #0 0x0000000000405c26 in BoolString::operator= (this=0x802816130,
>> other=@0x7fffffffdc40)
>> at BoolString.h:58
>> #1 0x000000000040291a in submit_query (ads=0x802817400,
>> reslist=@0x7fffffffe1a0,
>> lp=0x8028bc080) at dns-terror.cc:347
>> #2 0x0000000000404870 in main (argc=6, argv=0x7fffffffe690) at
>> dns-terror.cc:763
>>
>>
>> Ale tohle uz je pro me spanelska vesnice a nic mi to nerika.
>
> Takze nejdriv "kde":
>
> K chybe doslo v kodu co byl vygenerovan z radku 58 v BoolString.h,
> kteryzto kod byl zavolan z funkce submit_query, radku 347 v
> dns-terror.cc, ktery byl volan z funkce main, radek 763 tehoz zdrojoveho
> souboru.
>
> A ted co:
>
>> Program terminated with signal 4, Illegal instruction.
>
> V prelozenem kodu je instrukce, ktere konkretni procesor nerozumi.
>
> Takze zrejme jde o chybu pri prekladu - kod je prelozen pro jiny
> procesor nez na jakem nasledne bezi.
Je to kompilovano na amd64 a spousteno taky na amd64. Fyzicky se jedna o
kompilaci na Xeon E3-1240v2 a spousteni na nejakem starsim dual core
Opteronu (Sun Fire X2100 M2). Nicmene dns-terror pada i kdyz ho spoustim
primo na Xeon E3-1240v2
[...]
> Zustanem u te prvni moznosti.
>
> Ten kod v BoolString.h je celkem trivialni prirazeni. Takze bude treba dat:
> "set disassembly-flavor intel" (ledaze preferujes defaultni att) a
> disassembly 0x405c26
>
> Ono to vypise vysledek prekladu od zacatku te funkce. U me ale na adrese
> 405c26 instrukce nezacina, takze je zrejmy, ze ja mam prelozeno jinak
> (jina verze OS, jina verze prekladace, jine nastaveni systemu, jina
> uroce optimalizace pri prekladu, ...).
>
> To by mohlo podezreni potvrdit nebo vyvratit.
Tady jsem dostal tohle
(gdb) set disassembly-flavor intel
(gdb) disassembly 0x405c26
Undefined command: "disassembly". Try "help".
(gdb) disassemble 0x405c26
Dump of assembler code for function _ZN10BoolStringaSERKS_:
0x0000000000405c00 <_ZN10BoolStringaSERKS_+0>: push rbp
0x0000000000405c01 <_ZN10BoolStringaSERKS_+1>: mov rbp,rsp
0x0000000000405c04 <_ZN10BoolStringaSERKS_+4>: mov QWORD PTR
[rbp-0x10],rdi
0x0000000000405c08 <_ZN10BoolStringaSERKS_+8>: mov QWORD PTR
[rbp-0x18],rsi
0x0000000000405c0c <_ZN10BoolStringaSERKS_+12>: mov rsi,QWORD PTR
[rbp-0x10]
0x0000000000405c10 <_ZN10BoolStringaSERKS_+16>: mov rdi,QWORD PTR
[rbp-0x18]
0x0000000000405c14 <_ZN10BoolStringaSERKS_+20>: mov rdi,QWORD PTR [rdi]
0x0000000000405c17 <_ZN10BoolStringaSERKS_+23>: mov QWORD PTR [rsi],rdi
0x0000000000405c1a <_ZN10BoolStringaSERKS_+26>: mov rdi,QWORD PTR
[rbp-0x18]
0x0000000000405c1e <_ZN10BoolStringaSERKS_+30>: mov al,BYTE PTR [rdi+0x8]
0x0000000000405c21 <_ZN10BoolStringaSERKS_+33>: and al,0x1
0x0000000000405c23 <_ZN10BoolStringaSERKS_+35>: mov BYTE PTR [rsi+0x8],al
0x0000000000405c26 <_ZN10BoolStringaSERKS_+38>: ud2a
End of assembler dump.
> Mimochodem, dotceneho mista se tyka warning uz pri prekladu:
>
>> ./BoolString.h:59:3: warning: control reaches end of non-void function
>> [-Wreturn-type]
>> }
>> ^
>
> To by pad zpusobit nemelo, ale faktem je, ze funkce ma vracet hodnotu a
> pritom se navratova hodnota nenastavuje. Je pravda, ze v pripade
> optimalizaci by to mohlo zpusobit, ze oprimalizator nejaky potrebny kod
> vyradi, protoze ho bude pokladat za zbytecny. To ale tezko rict ...
Da se z toho vyzdimat jeste nejaka uzitecna informace? Pripadne da se
"neco" zkusit upravit pri te kompilaci, aby to fungovalo? Nebo tohle uz
musim jedine poslat autorovi fastresolve, at si s tim zkusi poradit?
Kazdopadne diky za cenne rady a instrukce!
Mirek
More information about the Users-l
mailing list