delphi - What can cause SysFreeString to hit an Int 3 breakpoint? -
I have some code that works fine under Delphi 2007, but breaks down under D2010, passing it in the string It includes, converting it to PWEdcher (in particular, not a widestring pointer, UnicodeString Pointer), doing some processing, and then calling SysFreeString. Unless the empty string is passed, it works fine, then SysFreeString breaks down. This is called a set of things that enhances a int 3
breakpoints inside the NITLL.LL. In the continuation of this point the results resulted in the error of
message violation of access to '0x7747206e: Exclamation class $ C0000005 with the reading of message 0x539b8dba'.
Which, if you look closely, is not a standard access violation message.
Above the stack trace, when it hits int3
, it looks like this:
: 774e475d; Ntdll.dll: 774afad0; Ntdll.dll: 774e5 de 9; Ntdll.dll: 774 A6 DFF; Ntdll.dll: 76fc1075; C: \ Windows \ system32 \ ole32.dll: 770e443a; C: \ Windows \ system32 \ oleaut32.dll: 770e3ea3 oleaut32.SysFreeString + 0x4a
Anyone know what's happening here?
Edit (from comments):
This is not a wide string, though. This string toll is PWE reader generated by OSERT, and when no empty string is passed, there is no double-free error. Unfortunately, I can not really post a code sample because it is a third-party component under copyright. (And I can not ask them for support because it is no longer supported. In fact, the whole thing is a big disturbance.)
I'm going to try mental debugging. You have some kind of heap corruption in your application and SysFreeString is unfortunate prey (it's difficult to tell without OS symbols, you should probably install MSFT symbol package for your OS.)
Enable the application Try doing the verification for your app (especially in PageHeap) and see if it has crashed before.
Comments
Post a Comment