BrowserUk established that the crash was occurring in the libgcc_s_dw2-1.dll ... and that piece of information made the job of fixing the problem so much easier.

Most of my ppm packages have a dependency on libgcc_s_dw2-1.dll, so I therefore distribute that file with them.
.................
However, I don't like the idea of installing that dll into a path folder (which is where it needs to go) - given that there could well be other instances of that dll elsewhere in the path, thereby causing some incompatibility. So, I rename a copy of libgcc_s_dw2-1.dll to libgcc_sis_452.dll, have the module look for that dll instead, and distribute (in blib/script of the ppm package) libgcc_sis_452.dll instead of libgcc_s_dw2-1.dll. (I also take a similar approach with libstdc++-6.dll which I've renamed to cpp+-6_sis.dll, but I distribute that file only with the few packages that actually need it.)


I guess because of the crash that BrowserUk identified (details of which are not posted in this thread), the question of ABI comes up. I dont have copy of libgcc_s_dw2-1.dll in my Strawberry Perl folder, but I found libgcc_s_sjlj-1.dll. I think it is identical to libgcc_s_dw2-1.dll. Here are its exports.
_Unwind_Backtrace _Unwind_DeleteException _Unwind_FindEnclosingFunction _Unwind_Find_FDE _Unwind_GetCFA _Unwind_GetDataRelBase _Unwind_GetGR _Unwind_GetIP _Unwind_GetIPInfo _Unwind_GetLanguageSpecificData _Unwind_GetRegionStart _Unwind_GetTextRelBase _Unwind_SetGR _Unwind_SetIP _Unwind_SjLj_ForcedUnwind _Unwind_SjLj_RaiseException _Unwind_SjLj_Register _Unwind_SjLj_Resume _Unwind_SjLj_Resume_or_Rethrow _Unwind_SjLj_Unregister __absvdi2 __absvsi2 __absvti2 __addvdi3 __addvsi3 __addvti3 __ashlti3 __ashrti3 __bswapdi2 __bswapsi2 __clear_cache __clzdi2 __clzti2 __cmpti2 __ctzdi2 __ctzti2 __deregister_frame __deregister_frame_info __deregister_frame_info_bases __divdc3 __divsc3 __divti3 __divxc3 __emutls_get_address __emutls_register_common __enable_execute_stack __ffsdi2 __ffsti2 __fixdfti __fixsfti __fixunsdfdi __fixunsdfti __fixunssfdi __fixunssfti __fixunsxfdi __fixunsxfti __fixxfti __floattidf __floattisf __floattixf __floatuntidf __floatuntisf __floatuntixf __gcc_personality_sj0 __lshrti3 __modti3 __muldc3 __mulsc3 __multi3 __mulvdi3 __mulvsi3 __mulvti3 __mulxc3 __negti2 __negvdi2 __negvsi2 __negvti2 __paritydi2 __parityti2 __popcountdi2 __popcountti2 __powidf2 __powisf2 __powixf2 __register_frame __register_frame_info __register_frame_info_bases __register_frame_info_table __register_frame_info_table_bases __register_frame_table __subvdi3 __subvsi3 __subvti3 __ucmpti2 __udivmodti4 __udivti3 __umodti3 TlsCallback_0 TlsCallback_1 DllEntryPoint
Looks like it implements non-CPU-native math, and it implements GCC's C++ compliant exception handling. AFAIK, GCC's exception handling is not SEH/MS compliant. Note, I dont know the details on the post preprocessor or asm level of GCC exception handling. The question is, will the 2 different libgcc DLLs every try to pass a struct to each other, or use the same TLS slot, use the same Kernel32 Event, or see each other, or not see each other, for example, this line is MS DLL dependent, it lives in libgcc http://opensource.apple.com/source/llvmgcc42/llvmgcc42-2335.9/gcc/config/i386/cygming-crtbegin.c?

In reply to Re^4: Module::Install hacking by bulk88
in thread Module::Install hacking by syphilis

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.