[Bug 49802] New: Crash at AfxBeginThread of x64 apps on macOS when built with VS2019

WineHQ Bugzilla wine-bugs at winehq.org
Tue Sep 8 11:29:20 CDT 2020


https://bugs.winehq.org/show_bug.cgi?id=49802

            Bug ID: 49802
           Summary: Crash at AfxBeginThread of x64 apps on macOS when
                    built with VS2019
           Product: Wine
           Version: 5.16
          Hardware: x86-64
                OS: Mac OS X
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: -unknown
          Assignee: wine-bugs at winehq.org
          Reporter: reinhold.hoffmann at hotmail.com

Created attachment 68117
  --> https://bugs.winehq.org/attachment.cgi?id=68117
Samples to demonstrate the issue

Our x64 apps built with Visual Studio 2010 (VS2010) run on macOS for a long
time. We recently have started a project to move to Visual Studion 2019
(VS2019). The same x64 app which works fine when built with VS2010 crashes on
macOS when it is built with VS2019. The crash occurs when the MFC function
AfxBeginThread is called. Static linking is used for linking the MFC and other
libs.

After a very painful research we identified that a simular report has been made
in Nov. 2019 in the Wineskin area 
(see https://github.com/Gcenx/WineskinServer/issues/22).

The reporter said "I ended up replacing the AfxBeginThread call with a call to
CreateThread which works fine on all versions." We did the same thing with the
same result. Replacing AfxBeginThread by CreateThread works fine with VS2019.
However, according to 
https://stackoverflow.com/questions/21718674/difference-between-afxbeginthread-and-createthread 
a replacement of AfxBeginThread by CreateThread is not really recommended when
MFC is used.

The crash happens on all macOS versions with Wine 5.4, 5.7 and 5.16 (we took
5.16 from Gcenx (https://github.com/Gcenx/macOS_Wine_builds)). On Windows and
Linux the VS2019 app runs fine. Further, the Win32 equivalent app runs fine on
macOS.

In summary:

A crash happens for AfxbeginThread in an x64 app on macOS with Wine 5.4, 5.7,
5.16.

We did a deeper dive and found that the crash happens inside AfxbeginThread,
module Thread.cpp inside the function __acrt_get_begin_thread_init_policy.
See address:
0001:001ab7cc       __acrt_get_begin_thread_init_policy 00000001401ac7cc f  
libucrt:win_policies.obj 

According to the backtrace.txt (attached) the exception happens when reading
from a 32 bit address. This sounds strange to me for a x64 app.

Any help is highly appreciated.

Reinhold

==========================================================================

As a C++ sample I have compiled a trivial app which AfxBeginThread which
demonstrate the problem.

In the attached zip file you can find

backtrace.txt
Test_of_AfxBeginThread_VS2019.exe
Test_of_AfxBeginThread_VS2010.exe

The code and project files for VS2010 and VS2019 can be downloaded from
www.notation.com/download/Wine/Bugzilla/Project_Files_AfxBeginThread_samples.zip

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list