#39268: g++ -O1 produces crashing code when accessing dlls via LoadLibrary()/GetProcAddress()/reinterpret_cast Open Date: 2019-05-30 19:26 Last Update: 2019-05-31 13:46 URL for this Ticket: https://osdn.net//projects/mingw/ticket/39268 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=39268 --------------------------------------------------------------------- Last Changes/Comment on this Ticket: 2019-05-31 13:46 Updated by: comer352l Comment: Reply To keith BTW, do you really need the selectLibrary() method anyway? I don't know your requirements specification, but the ability to arbitrarily change the DLL association of a J2534_API class instance, "on the fly", seems unusual. If you don't explicitly need such a capability, why not bind the DLL within the constructor itself, either using a name passed as a constructor argument, or using a fixed name specified within the constructor code? Background: The code is about accessing SAE-J2534-compliant dlls. SAE-J2534 specifies an unified interface for accessing different automotive hardware (interfaces for diagnostic purposes, firmware flashing etc.) via a proprietary dlls. The spec defines function prototypes, arguments and return values and the behavior of the functions, the implementation is up to the equipment manufaturers. It also defines a method to register/find J2534-compliant dlls using the Windows registry. See http://www.drewtech.com/support/passthru.html That's why the DLL association needs to be changed "on the fly". --------------------------------------------------------------------- Ticket Status: Reporter: comer352l Owner: (None) Type: Issues Status: Open Priority: 5 - Medium MileStone: (None) Component: (None) Severity: 5 - Medium Resolution: None --------------------------------------------------------------------- Ticket details: I'm investigating the following crash, which occurs when accessing a dll via LoadLibrary(), getProcAddress(), reinterpret_cast: Problem signature: Problem Event Name: BEX Application Name: test.exe ... Fault Module Name: StackHash_0a9e ... Exception Offset: 0028fe9c Exception Code: c0000005 Exception Data: badc0de1 ... Additional Information 1: 0a9e Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 Additional Information 3: 0a9e Additional Information 4: 0a9e372d3b4ad19135b953a78882e789 The code only crashes if it is compiled with -O1 (-O2, ...). Moving around pieces of the code seems to fix the issue. I was finally able to create some reduced example code with working / non working variants (attachment follows). -- Ticket information of MinGW - Minimalist GNU for Windows project MinGW - Minimalist GNU for Windows Project is hosted on OSDN Project URL: https://osdn.net/projects/mingw/ OSDN: https://osdn.net URL for this Ticket: https://osdn.net/projects/mingw/ticket/39268 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=39268