The following example protrace is annotated to describe the information included in the various sections, and to indicate which sections require interpretation by Progress Technical Support. The example is from a Windows session; some sections would be slightly different on a Unix/Linux operating system.
Date and time the protrace was created. This can help you match the protrace with a specific incident, or a specific timestamp in a log file.
=====================================================
PROGRESS stack trace as of Mon May 13 17:36:06 2013
=====================================================
Release, build and platform of the OpenEdge instance that was running. This can help you determine whether a known bug is applicable (was it already fixed in this version?), or whether various OpenEdge components in your application are incompatible versions.
Progress OpenEdge Release 11.1 build 1143 on WINNT
Startup parameters for the OpenEdge session. If you know that certain parameters should have been used, this allows you to determine whether the session was actually started with the correct parameters.
Startup parameters:
-pf \\progress\progress$\startup.pf,-cpinternal ISO8859-1,-cpstream ISO8859-1,-cpcoll Basic,-cpcase Basic,-d dmy,-numsep 44,-numdec 46,(end .pf),-pf \\Progress\Company$\Dev\Util\Dev_Client.pf,-db Dev,-ld Physical,-S 27700,-H progress,-N tcp,-s 63,-mmax 4096,-Bt 1000,-T C:\Progress\Temp\Dev,-d dmy,-nb 200,(end .pf),-p logon.w,-basekey ini,-ininame \\Progress\Company$\Dev\Util\Dev_Client.ini,-debugalert
The exception code and fault address:May be used by Progress Technical Support to assist you.
Exception code: 0EEDFADE
Fault address: 7661C41F 01:0000B41FThe module that was running when the application crashed. KERNELBASE.dll is a Windows library. Other Windows libraries commonly seen in protraces are KERNEL32.dll and NTDLL.dll. If the crash was in the OpenEdge GUI client executable, prowin32.exe or prow32.dll would be listed here. Other OpenEdge modules typically seen included _progres.exe for the OpenEdge character client, or proapsv.exe for an AppServer agent.
C:\Windows\syswow64\KERNELBASE.dll
The contents of the registers at the time of the crashMay be used by Progress Technical Support to assist you.
Registers:
EAX:00000002
EBX:0025F890
ECX:38B0A8F9
EDX:775271D5
ESI:00000000
EDI:0025F7EC
CS:EIP:7600000:774F1261
SS:ESP:0000:4FD8ECD9 EBP:0025F8A0
DS:4AE450 ES:4AE48C FS:4AE450 GS:0000
Flags:0025F880
The Windows debugging module used:When a debugging tool such as ADPlus is enabled, and the path that will be used by the debugging tool or the protrace code itself when looking for symbol files. Since OpenEdge 11.0 the dbghelp.dll file is shipped with the install media.This information may be used if you are requested by Progress Technical Support to obtain a memory dump from a crash, or if Technical Support suspects the protrace is invalid. Refer to the following Articles:
Debugging dll: \\Progress\Progress$\bin\DBGHELP.DLL
Symbol Path: \\Progress\Progress$\bin;\\progress\progress$\pdbfiles
The functions:Functions that were running in the OpenEdge executable, or Operating System functions called by the executable, when the application crashed. The last function called is at the top of the list. This section may be used by Progress Technical support to assist you.
Call Stack:
Address Frame
774F1261 0025F8A0 LdrUnloadDll+4A The ABL Stack Trace:The ABL procedures that were running when the application crashed.
- The last procedure called is at the top of the list.
- The first string is the name of the internal procedure or function that was executing.
- The filespec that follows is the procedure that was executing, relative to the OpenEdge work directory. Compiling this procedure with the DEBUG-LIST option will generate a listing with all include files expanded, and line numbers that will match up with the line numbers in the stack trace. This allows you to see the exact line of code that was executing at the time of the crash. If compiled code was executing, the location of the r-code file is in parentheses at the end of the line.
** ABL Stack Trace **
--> OrtariClose Code/PrintOrder.p at line 350 (.\Code\PrintOrder.r)
Print_Confirmation_Ortari Code/PrintOrder.p at line 5806 (.\Code\PrintOrder.r)
Action_WorksOrder Code/PrintOrder.p at line 2079 (.\Code\PrintOrder.r)
PrintOrder programs/worksorder/v-worksorderinput.w at line 9083 (\\progress\company$\Dev\Module\code\programs\worksorder\v-worksorderinput.r)
ValidateInput programs/worksorder/v-worksorderinput.w at line 10241 (\\progress\company$\Dev\Module\code\programs\worksorder\v-worksorderinput.r)
USER-INTERFACE-TRIGGER Programs/WorksOrder/WorksOrder.w at line 2079 (\\progress\company$\Dev\Module\code\Programs\WorksOrder\WorksOrder.r)
Menu/Dynamic.w at line 2740 (\\progress\company$\Dev\Module\code\Menu\Dynamic.r)
logon.w at line 1684 (\\progress\company$\Dev\Module\code\logon.r)
Persistent procedures/ClassesA list of all persistent procedures and classes that were in memory at the time of the crash. This can be used with the ABL stack trace to identify problems with calls to persistent procedures or classes. For example, the procedure called is not in memory at the time. Note that the offset between handles is irrelevant and are not helpful for crash analysis.
** Persistent procedures/Classes **
Handle File Name
001354 .\Code\PrintOrder.r
001275 \\progress\company$\Dev\Module\code\programs\worksorder\v-worksorderinput.r
001270 \\progress\company$\Dev\Module\code\Programs\WorksOrder\b-WorksOrderAddresses.r
001265 \\progress\company$\Dev\Module\code\smart\browser\b-srchworksorder.r
001260 \\progress\company$\Dev\Module\code\Smart\Query\q-Customer.r
001255 \\progress\company$\Dev\Module\code\programs\worksorder\b-customerorders.r
001179 \\progress\company$\Dev\Module\code\Smart\Viewer\v-Customer.r
001169 .\code\programs\worksorder\v-customerref_qry.r
001142 \\progress\company$\Dev\Module\code\programs\worksorder\v-customernote.r
001134 \\progress\company$\Dev\Module\code\src\panel\update_panel_3.r
001129 \\progress\company$\Dev\Module\code\smart\browser\b-srchcustomer2.r
001122 \\progress\company$\Dev\Module\code\smart\browser\b-srchcustomer1.r
001114 \\progress\company$\Dev\Module\code\smart\dialogue\f-srchcustomer.r
001110 \\progress\company$\Dev\Module\code\Programs\WorksOrder\WorksOrder.r
001003 .\code\Remote.r
001002 \\progress\progress$\gui\adm\objects\broker.r
001001 \\progress\company$\Dev\Module\code\HydraLib.r
PROPATH:The propath in use at the time of the crash. This can be used with the ABL stack trace to determine why code in a certain location was run rather than code in another location.
** PROPATH **
\\progress\company$\Dev\Module\code,.,,%dlc%\gui,%dlc%,%dlc%\bin,\\progress\progress$\,\\progress\progress$\gui,\\progress\progr
ess$\gui\adecomm.pl,\\progress\progress$\gui\adecomp.pl,\\progress\progress$\gui\adedesk.pl,\\progress\progress$\gui\adedict.pl,
\\progress\progress$\gui\adeedit.pl,\\progress\progress$\gui\adeicon.pl,\\progress\progress$\gui\aderes.pl,\\progress\progress$\
gui\adeshar.pl,\\progress\progress$\gui\adeuib.pl,\\progress\progress$\gui\adeweb.pl,\\progress\progress$\gui\adexml.pl,\\progre
ss\progress$\gui\dataadmin.pl,\\progress\progress$\gui\prodict.pl,\\progress\progress$\gui\protools.pl,\\progress\progress$\bin,
\\progress\progress$\v9,\\progress\progress$
Databases (logical/type/physical)Databases which the session was connected. This can be used with the ABL stack trace and the debug listing to identify problems with retrieving data. For example, the physical database connected is not the one that was expected.
** Databases (logical/type/physical) **
Physical PROGRESS Dev
The Trailer:Identifies the end of the protrace. If this line is missing, the protrace may not be completely accurate. The protrace code cannot always obtain all the needed information before the crash, but it will do the best it can. Protraces may be produced with missing stack traces, or with invalid C stack traces (Progress Technical Support may determine that a C stack trace is invalid and provide you with instructions for obtaining a valid stack trace). Sometimes protraces are not produced at all.
** End of Protrace **