#39268: g++ -O1 produces crashing code when accessing dlls via LoadLibrary()/GetProcAddress()/reinterpret_cast Open Date: 2019-05-30 19:26 Last Update: 2019-06-04 18:18 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-06-04 18:18 Updated by: comer352l Comment: Reply To keith Reply To comer352l 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 Sure, but I don't see any specific requirements specification for C++ bindings ... in particular, no requirement for a selectLibrary() method. That's right. These are no requirements, just the way I have choosen to go. Implicit linking could also be used instead LoadLibrary/GetProcAddress/ reinterpret_cast. But that means binding to a specific DLL/hardware, which is exactly the opposite of what SAE-J2534 tries to reach. And you usually don't get anything else than the DLL from a hardware manufacturer (no header file etc.). --------------------------------------------------------------------- Ticket Status: Reporter: comer352l Owner: (None) Type: Issues Status: Closed Priority: 5 - Medium MileStone: (None) Component: (None) Severity: 5 - Medium Resolution: Invalid --------------------------------------------------------------------- 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