abort during exit() with a dynamically loaded C++ library
Mon Jul 7 19:33:00 GMT 2014
On 2014-07-07 PM 10:58, Jon TURNEY wrote:
> On 17/06/2014 19:11, Jon TURNEY wrote:
>> I think I have found a problem when building programs using the latest
>> mesa library, where abort is being called during exit()
The main concern of this crash is the order mismatch between loading and
unloading dynamic library. It seems that either crtbegin or crtend code
of i386 libgcc has some pitfall. The mismatch always occurs when main()
didn't statically link to libgcc.
If my memory serves me correctly, static version of deregister_frame_fn
is set to wrong address (see cygming-crtbegin.c) by unknown fallacy of
gnu-ld linker. That is, Object file seems okay, But generated dll breaks
offset argument resulting in invalid offset operand of memory
references, although Kai Tietz said in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57680 that It had been fixed.
Until the fallacy of gnu-ld is being resolved by someone that has plenty
of time or someone have workaround against the fallacy of
ever-not-warranted linker, I'll suggest you to just call
dlopen("cyggcc_s-1") before dlopen'ing any DLL that has dynamic linkage
to libgcc. It would be okay for workarounding the problem.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin