~~~~~~~~~~~
(14:30:38) Vampier: ntdll.dll!000007fa7de31069() Unknown
(14:30:39) Vampier: > catapult.exe!wxCriticalSection::Enter() Line 171 C++
(14:30:39) Vampier: catapult.exe!wxEvtHandler::AddPendingEvent(wxEvent & event) Line 1144 C++
(14:30:39) Vampier: catapult.exe!wxPostEvent(wxEvtHandler * dest, wxEvent & event) Line 2571 C++
(14:30:39) Vampier: catapult.exe!PipeReadThread::Entry() Line 55 C++
(14:30:39) Vampier: catapult.exe!wxThreadInternal::DoThreadStart(wxThread * thread) Line 525 C++
(14:30:39) Vampier: catapult.exe!wxThreadInternal::WinThreadStart(void * param) Line 552 C++
(14:30:40) Vampier: catapult.exe!callthreadstartex() Line 354 C
(14:30:41) Vampier: catapult.exe!_threadstartex(void * ptd) Line 337 C
(14:30:41) Vampier: kernel32.dll!000007fa7cfc1832() Unknown
(14:30:42) Vampier: ntdll.dll!000007fa7de8d609() Unknown
(14:30:56) Vampier: CRASH!
(14:32:33) egp: Vampier: is this x64 build?
(14:33:39) Vampier: yep
~~~~~~~~~
No. From the wx docu http://docs.wxwidgets.org/2.8.12/wx_wxevthandler.html#wxevthandleraddpendingevent :
wxEvtHandler::AddPendingEvent
void AddPendingEvent(wxEvent& event)
"This is also the method to call for inter-thread communication---it will post events safely between different threads which means that this method is thread-safe by using critical sections where needed. In a multi-threaded program, you often need to inform the main GUI thread about the status of other working threads and such notification should be done using this method."
Last edit: Anonymous 2013-08-02
Diff:
~~~~~~~~~~~~~
// wx/thread.h
if !defined(WXMSW) && !defined(WXMAC)
else // MSW
endif // MSW/!MSW
...
class WXDLLIMPEXP_BASE wxCriticalSection
{
...
// enter the section (the same as locking a mutex)
wxCRITSECT_INLINE void Enter();
...
// src/msw/thread.cpp
void wxCriticalSection::Enter()
{
::EnterCriticalSection((CRITICAL_SECTION *)m_buffer); //line 170
} //line 171
~~~~~~~~~~~
NB: wx seems to at least partially support x64 as there are "#ifdef WIN64" stuffs.
Let's not dive into the code of wxWidgets and assume it's not (very) buggy...
As there's no way to reproduce this (none is described), let's simply close this bug.