Hi
Having the occasional issue with Application Exceptions on an app created by C11.1.
Messages like these appear.
I cannot reproduce it but a couple of users have it occurring intermittently.
Any clues on how to intercept it?
Thanks
Paul
Hi
Having the occasional issue with Application Exceptions on an app created by C11.1.
Messages like these appear.
I cannot reproduce it but a couple of users have it occurring intermittently.
Any clues on how to intercept it?
Thanks
Paul
Iād recommend shipping your application with the debug build of the clarion runtime (Clarion11\bin\debug\ClaRUN.dll) and building your application with Debug info >= min and āAdd line Number informationā parameter on.
Install the Clarion debugger as the system debugger on the machines that are seeing the issue, you could then examine the memory (locateoffset) when this window appears and you might be able to workout what api call is happening without the source clw, in my experience its usually a pointer error, ie not got the right address(somevar)
or *parameterprototype
. You can drop the source code file in question onto the machine where this happens in case you have a few api calls within the procedure but then you are sharing the code which you might not want to do?
If you have debugview in your code and the machine has internet access you can run debugview from the internet \live.sysinternals.com\tools\Dbgview.exe and then see what the debugoutput string is.
Something to watch out for with some Windows apiās is MS uses Long Pointers (memory addresses) which point/link to other Long Pointers (memory addresses). In the pic, the memory addresses which are highlighted in the red boxes are all LPās to LPās and I cant work out why MS have done it this way.
ConvertSidToStringSidA function (sddl.h) - Win32 apps | Microsoft Docs
[in] Sid
A pointer to the SID structure to be converted.
[out] StringSid
A pointer to a variable that receives a pointer to a null-terminated SID string. To free the returned buffer, call the LocalFree function.
This might also be useful if you want to explore the stack? This is supposedly how Clarion handles its stack, which may be relevant if you are not using Pascal or C as the passing convention, it depends on if this access violation is a windows api call failing and what you prototyped in the module(āsomeapiā).
TopSpeed / Clarion / JPI - x86 calling conventions - Wikipedia
Iāve been debating whether to sell this as an addon, its a template which makes it easy to prototype parameters basically.
The red box is a bug in C11, its the drop down part which should be attached to the Data Type: Byte bit of the template window on the right.
Read this post
Thanks for the replies. Lots of good knowledge there. I will pass it on and see whether it gets us to point B.
Cheers
Paul
I think the two most common sources for those in my experience are (a) trying to access an object that has not yet been instantiated in that context, or (b) failing to return a value from a procedure that is prototyped to return a string.
Iād say that missing/incorrect project defines cause more hair loss than anything else.