#768 closed Bugs (None)
Crash on exit VC8.0
| Reported by: | nobody | Owned by: | John Maddock |
|---|---|---|---|
| Milestone: | Component: | regex | |
| Version: | None | Severity: | Showstopper |
| Keywords: | Cc: |
Description (last modified by )
Hi
I get a crash on exit of my application: when examining
the stack as show below I conclude that the crash
heppens in the cleanup of some static objects in the
boost::regex i.e. the destructor of
w32_regex_traits_implementation. This happens in
release build on VC8.0 with 1.33.1.
Was there a patch for this?
Thankx for feedback,
Kenny Knecht
pietjeleugenaar@hotmail.com
kernel32.dll!7c812a5b()
[Frames below may be incorrect and/or missing, no
symbols loaded for kernel32.dll]
kernel32.dll!7c812a5b()
msvcp80.dll!std::char_traits<char>::_Copy_s(char *
_First1=0x09fd8490, unsigned int _Size_in_bytes=31,
const char * _First2=0x7c423995, unsigned int
_Count=27) Line 576 C++
msvcp80.dll!std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::assign(const
std::basic_string<char,std::char_traits<char>,std::allocator<char>
> & _Right={...}, unsigned int _Roff=1244628, unsigned
int _Count=3765269347) Line 1021 + 0x2c bytes C++
00000001()
GeneMathsXT.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const
,std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > >,0> >::erase() + 0x73 bytes C++
GeneMathsXT.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const
,std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > >,0> >::erase() + 0xa4 bytes C++
GeneMathsXT.exe!boost::re_detail::w32_regex_traits_implementation<char>::~w32_regex_traits_implementation<char>()
+ 0x52 bytes C++
GeneMathsXT.exe!boost::detail::sp_counted_impl_p<boost::re_detail::w32_regex_traits_implementation<char>
>::dispose() + 0xf bytes C++
GeneMathsXT.exe!std::list<std::pair<boost::shared_ptr<boost::re_detail::w32_regex_traits_implementation<char>
>,unsigned long const
*>,std::allocator<std::pair<boost::shared_ptr<boost::re_detail::w32_regex_traits_implementation<char>
>,unsigned long const *> > >::clear() + 0x3e bytes C++
GeneMathsXT.exe!boost::object_cache<unsigned
long,boost::re_detail::w32_regex_traits_implementation<char>
>::data::~data() + 0x6b bytes C++
> msvcr80.dll!doexit(int code=0, int quick=0, int
retcaller=0) Line 553 C
msvcr80.dll!exit(int code=0) Line 398 + 0xd bytes C
GeneMathsXT.exe!__tmainCRTStartup() Line 549 C
kernel32.dll!7c816fd7()
Change History (7)
comment:2 by , 16 years ago
Logged In: NO Hi John, I have been testing all day, but can't seem to find out what goes wrong: all I know is that if I don't call any boost::regex function everything goes all right otherwise I get a crash while cleaning up the static objects. I haven't changed the default settings so I guess the dll loads statically. In debug every works fine. I guess if I were overwriting memory in my own code that would fail as well, but this is not entirely impossible of course. I tried to enable BOOST_SP_ENABLE_DEBUG_HOOKS but I cannot delete anything from the memory then... These are the settings I use in VC8.0 compiler: /Od /I "C:\Boost\include\boost-1_33_1" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "TESTRELEASE" /D "_VC80_UPGRADE=0x0710" /D "_AFXDLL" /D "_MBCS" /FD /EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp".\Debug/pWindows.pch" /Fo".\Debug/" /Fd".\Debug/" /FR".\Debug\\" /W3 /nologo /c /Zi /TP /errorReport:prompt linker: /OUT:".\Debug/pWindows.exe" /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:".\Debug\ProtoGMWindows.exe.intermediate.manifest" /DEBUG /PDB:".\Debug/pWindows.pdb" /SUBSYSTEM:WINDOWS /ERRORREPORT:PROMPT opengl32.lib glu32.lib glaux.lib gdiplus.lib Thanks for your feedback! kenny
comment:3 by , 16 years ago
Logged In: YES user_id=14804 The project settings you give there are for a debug build, not a release build. Can you try and reproduce the issue with one of the sample regex programs and send me your IDE project files if you get a test case? Thanks, John.
comment:4 by , 16 years ago
| Status: | assigned → closed |
|---|
Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker).
comment:5 by , 14 years ago
After long investigation with the same problem (crash on program exit when actually using regex) I found that the problem is caused by mixing up the VC++ 2005 versions: the library was compiled with VC++ 2005 without SP1 and the program was compiled with VC++ 2005 with SP1. When I compiled the library with VC++ 2005 with SP1 the problem was gone.
comment:6 by , 14 years ago
| Description: | modified (diff) |
|---|---|
| Severity: | → Showstopper |
Ahah! Yes mixing compiler versions would certainly do it, glad you got to the bottom of this!
John.
comment:7 by , 14 years ago
I encountered the exact same crashes and after some investigation I discovered that checked iterators were turned off in our project, but on (the default) for the regex library. I built the library again with _SECURE_SCL=0 and indeed, the crashes disappeared.
