[MinGW-Notify] [mingw] #39268: g++ -O1 produces crashing code when accessing dlls via LoadLibrary()/GetProcAddress()/reinterpret_cast

Back to archive index
MinGW Notification List mingw****@lists*****
Wed Jun 5 01:18:09 JST 2019


#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



More information about the MinGW-Notify mailing list
Back to archive index