http://www.perlmonks.org?node_id=993828


in reply to Re^4: Module::Install hacking
in thread Module::Install hacking

(details of which are not posted in this thread)

Not many details to report - it was just one of those "perl.exe has stopped working" type of messages as the program (ie any program that had loaded Gtk2-WebKit) was exiting.
I don't know the exact details of what was going wrong, but both libgcc_sis_452.dll and libgcc_s_dw2-1.dll (which were identical) had been loaded by different parts of the program. Restructuring so that libgcc_sis_452.dll was used throughout fixed the problem.

My guess is that, during exit of "the program", a handle was being thrown to the wrong dll.

NOTE: The 2 dlls were not actually identical, but were close enough to identical. I did replace libgcc_s_dw2-1.dll with a copy that *was* identical to libgcc_sis_452.dll and it made no difference.

Cheers,
Rob

Replies are listed 'Best First'.
Re^6: Module::Install hacking
by BrowserUk (Patriarch) on Sep 15, 2012 at 04:44 UTC
    Not many details to report

    The guts of the problem was an unhandled exception during the cleanup of g++ exception stack frames. Beyond that I did not have the appropriate MinGW symbol files to trace into.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    RIP Neil Armstrong

      So ABI breakage and DLL hell between different builds of Mingw/GCC. Well what else could it be after looking at libgcc dll's export table other than GCC exception handling? div by zero or x87 FP exception? :-) I really really wish Mingw would has MS compatible SEH. Writing Win32 compiler-portable Perl XS/C code around bad C code beyond my control using IsBadReadPtr/IsBadWritePtr is cumbersome and those 2 will never catch STATUS_ILLEGAL_INSTRUCTION for example.
        MS compatible SEH.

        I agree. I did come up with a "compatibility layer" -- nothing fancy just a couple of #defines -- that allowed me to use SEH in my unauthorised version of Devel::Size and compile it with MSVC & Mingw 32 & 64-bit without change.

        However, in the subsequent authorised version, they re-wrote all the exception handling claiming that it didn't work on gcc. No details given, so I can't talk to that.

        I do know that syphilis compiled it successfully with MinGW and it appeared to work okay. Admittedly, I didn't try to do anything complicated with the exceptions; just basically ignored them.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        RIP Neil Armstrong