dns-terror (fastresolve-2.10_5) core dump na FreeBSD 10.x

Dan Lukes dan at obluda.cz
Thu Feb 25 21:06:58 CET 2016


Miroslav Lachman wrote:
>>> Program terminated with signal 4, Illegal instruction.

Tvuj kod:
> 0x0000000000405c23 <_ZN10BoolStringaSERKS_+35>: mov    BYTE PTR [rsi+0x8],al
> 0x0000000000405c26 <_ZN10BoolStringaSERKS_+38>: ud2a

Zadna instrukce ud2a neexistuje.

Zbytek je trocha Googleni.

Linux a gcc pouziva u2da jako "instrukci, ktera urcite neexistuje". Kdyz 
to jeste jednou prelozis, mel bys mezi warningama videt i takovyhle:

> warning: cannot pass objects of non-POD type '...' through '...'; call will abort at runtime

No, a jak gcc slibilo, tak, podle vseho, take udelalo - program ti abort 
at runtime. Upgrade gcc / preklad pomoci jine verze gcc asi spis 
nepomuze, snad jen v tom smyslu, ze od urcite verze dal uz to neni 
warning ale error a zhavaruje to primo pri prekladu a ne az pri behu.

Podstatou je zdrojovy kod obsahujici konstrukt, jehoz vyznam neni v C++ 
definovany. GCC se rozhodlo nepokouset se uhadnout co tim autor myslel.

Moje znalost c++ je ovsem spise pasivni, takze cist ho dokazu, ale 
obavam se, ze nikoliv opravit. To uz bude muset nekdo jiny, klidne autor 
fastresolve.

> Pripadne da se  "neco" zkusit upravit pri te kompilaci, aby to fungovalo?

Otazka je, proc se ti to preklada za pouziti GCC. Me to na 10.2-R 
preklada systemovy clang a ten konstrukt prelozi (coz jeste neznamena, 
ze to nakonec bude delat to, co autor zamyslel).

Copak ti napise
( cd /usr/ports/dns/fastresolve ; make -V CC )
a co
$( cd /usr/ports/dns/fastresolve ; make -V CC ) -v

Dan



More information about the Users-l mailing list