FAQ1 |
My application gives me an "index out of range" error. How do I
locate the error line? Answer: If you enable array index range checking (project property) then the range checker will ask "Do you want to GPF?" If you select "Yes" then the GPFReporter will report that your application GPF'd in the clarion runtime (range checker). The actual line where the error occurred is lost however the stack trace shows where that procedure was called from. This usually narrows your search down to one procedure. |
FAQ2 |
My application is a large multi DLL application, do I have to
enable debugging and recompile all the DLL's. Answer: No, the GPFReporter will identify the module in which the GPF occurred and only that module need be recompiled with the "Debug Information" mode set to FULL or MIN (not OFF). This will provide the source module line number where the GPF occurred. |
FAQ3 |
How do I add GPFReporter to a multi-DLL application. Answer: The GPFReporter should only be added to the EXE. The GPFReporter is installed as the default exception handler and will work for all threads including DLL calls. |
FAQ4 |
The GPF Report says that the error occurred on a line past the end
of my source. Why. Answer: The GPF Reporter line numbers are for the CLW modules, not the embedded source. In the clarion IDE right-click and select MODULE not SOURCE. |
FAQ5 | How do I
interpret the Stack Trace? Answer:The Stack trace is "upside down". The most recently used procedures are at the top. The "main" should be at the bottom unless this exception occurred on closing the application. |
FAQ6 |
The GPF Reporter says that the exception occurred at address :
XXXXXXXXh no module. What does this mean? Answer: This means that the program is executing outside of the code space of any of its modules. This can happen when your program calls an invalid procedure pointer. |
FAQ7 | The
GPF Report Stack Trace is empty. Why? Answer: Possibly your program has caused an exception while loading or exiting the clarion runtime code. This is unlikely. Usually what has happened is that the program has trashed the return stack and so the Stack Trace is garbage. A very common programming error that results in a trashed stack is to use string slicing with reversed position numbers. Example : IF SomeString[6 : 3] = 'ABC' .... Unfortunately the debug "array range checking" tests that the positions fall in the string but fails to test for illegal position numbers. |
FAQ8 |
Which exceptions are handled by the GPF Reporter? Answer: Any exception that would usually end your application with the windows exception handler. The following are defined: EXCEPTION_ACCESS_VIOLATION (0C0000005h) EXCEPTION_DATATYPE_MISALIGNMENT (080000002h) EXCEPTION_BREAKPOINT (080000003h) EXCEPTION_SINGLE_STEP (080000004h) EXCEPTION_ARRAY_BOUNDS_EXCEEDED (0C000008Ch) EXCEPTION_FLT_DENORMAL_OPERAND (0C000008Dh) EXCEPTION_FLT_DIVIDE_BY_ZERO (0C000008Eh) EXCEPTION_FLT_INEXACT_RESULT (0C000008Fh) EXCEPTION_FLT_INVALID_OPERATION (0C0000090h) EXCEPTION_FLT_OVERFLOW (0C0000091h) EXCEPTION_FLT_STACK_CHECK (0C0000092h) EXCEPTION_FLT_UNDERFLOW (0C0000093h) EXCEPTION_INT_DIVIDE_BY_ZERO (0C0000094h) EXCEPTION_INT_OVERFLOW (0C0000095h) EXCEPTION_PRIV_INSTRUCTION (0C0000096h) EXCEPTION_IN_PAGE_ERROR (0C0000006h) EXCEPTION_ILLEGAL_INSTRUCTION (0C000001Dh) EXCEPTION_NONCONTINUABLE_EXCEPTION (0C0000025h) EXCEPTION_STACK_OVERFLOW (0C00000FDh) EXCEPTION_INVALID_DISPOSITION (0C0000026h) EXCEPTION_GUARD_PAGE (080000001h) EXCEPTION_INVALID_HANDLE (0C0000008h) |
FAQ9 |
The GPF Reporter reports that the exception occurred in the
"Library state". What does this mean? Answer: "Library state" is the label given by the clarion compiler to code inside the clarion RTL (C60RUNX.DLL) or LIB. This is where most exceptions occur (as your program code is a series of calls to clarion functions). Before you send a bug report to SV please read on. You need to locate where in YOUR code you called this clarion library code from. Once you have established where your code called the library then you must find the reason for the exception (usually something done, not done or done too soon). The stack trace is there to show you where in YOUR code the clarion library was called from. See FAQ 5 & 7. |
FAQ10 |
My stack trace shows lines prefixed with ???. What does this
signify. Answer: These are addresses on the stack which might be part of the calling chain. If a procedure makes a call to another procedure then it may (optionally) push the EBP ("Stack Frame Pointer") onto the stack and then copy the ESP ("Stack Pointer") over the EBP. This allows us to "walk" back down the stack using the pushed EBP / EIP ("return address") pairs. If the called procedure does not push the EBP and then calls a 3rd procedure which does push the EBP then it appears, from the stack trace, that the first procedure called the 3rd procedure. The second is "lost". |
FAQ11 |
My GPF report contains the expression "Line ?=XXXX" Is the GPF
Reporter unsure? Answer: Yes. This occurs where "min" debug info is compiled into the program / DLL. If possible compile the module with "full" debug info. The GPF Reporter can then verify the ?= line numbers. |
FAQ12 |
Will using "min" or "full" debug settings slow my program load /
execution time? Answer: Yes the program will take longer to load and will execute more code. However the change is usually not noticeable. Please note that although the EXE / DLL might increase in size by a large amount (often from 1mByte to 10mBytes) this does not affect the load / execution speed. The debug info added to the EXE / DLL file is not loaded into program memory. The program is however not optimized by the compiler in debug mode and index range checking etc adds extra code which accounts for the slower load / execution times. |
FAQ13 |
I am using Armadillo and now the GPF Reporter no longer works. Is
there a work around? Answer: Yes. In the Armadillo options you will need to set the "Data after program" option to "Fake original data location". This is only available in the Armadillo Professional edition. The GPF Reporter then works correctly. |
FAQ14 |
I am using Eudora and GPF Reports containing & or ? do not
eMail correctly. What can I do? Answer: Select the "Always use Paste Method" Email option. |
FAQ15 |
I know there was a GPF but the GPF reporter never executed. Answer: Uncheck the "Enable Wait Window" option. Often after a GPF the clarion runtime library (in memory) is not able to open the wait window. The GPF Reporter then GPF's while opening this window and as it is installed as the GPF handler.... If the above does not resolve the problem then try setting the "close quietly" option. Look in the GPF Report Log for the report. Also take a look at: My program exits without GPF reporter displaying any messages. |
FAQ16 |
I've added GPF Reporter to my program. This requires that
debugging be switched on. Now I get the " Assertion failed on
line: 303 in file abfile.clw. Message: You are calling
CLOSE(thefile) instead of FileManager.close(). Shall I GPF?"
error! How can GPF Reporter and FM3 co-exist? Answer: GPF Reporter Clarion's Debug mode to be switched on. As most of you know, ABC has an over sensitive assert warning when you've used a legacy close() instead on an Access:File.close() (see GQxx for more info). The only way to allow FM2/3 and GPF Reporter to co-exist in an application is to comment our the assert in your abfile.clw in your Clarion\libsrc directory. |
FAQ17 |
When we try to run your demo, instead of Outlook client opening
up, we have 32 web pages pop up with the following URL: mailto:Jim%20<jim_zetterberg@simonton.com>...etc Answer: Have you just changed mail servers GroupWise to Exchange - and maybe the client install didn't go as smoothly as it should have? Solution: In the IE browser, go to Tools, Internet Options, Programs Tab a. Changed E-mail from Microsoft Office Outlook to Outlook Express. b. Changed it back to Microsoft Office Outlook. Problem was solved. |
FAQ18 | My program exits without GPF reporter
displaying any messages. Answer: 1. Check that your program has been compiled in debug mode (Build | Set Configuration | Debug) 2. In your project settings, on the Compiling tab, set the Runtime Checks (Index out of range and Stack Overflow) off. 3. It could be that the program exited under (albeit unknown) instruction. Occasionally the program GPF's so badly, that it cannot even display the message window to show the GPF. In this case, you will only be able to view the GPF logfile in order to see what the problem was. The logfile is made in the directory specified in the GPF Reporter Global Extension template |
FAQ19 | I don't want any messages to appear, and I
want my app/service to restart and email me the logfile. In the Settings tab of your GPF Reporter global extension template, you need to do the followin
|
FAQ20 | I'm using Clarion 7, but no line numbers
are shown in the GPF report. You need to set the Build mode to Debug. In the Build menu, select Set Configuration to Debug Since upgrading to Windows7 I get many emails to send (around 30 plus) each time my application GPFs, with only a line or two in the body of the email GPF Reporter uses the command line to interact with the mail client, which has a limitation of characters (in the order of 512 chars). If your command line (particularly the path of the application) is very long, (and the from mail address and to mail address, and subject) then this leaves little room for the actual text of the GPF log. What we do ( and indeed recommend) is to write to a log file. The next time the application opens, we email the GPF Report as an attachment (using NetTalk) which bypasses this limitation completely. |
CapeSoft Support | |
---|---|
Telephone | +27 87 828 0123 |