Salesforce

How to use dbx to obtain a stack trace when no core is dumped

« Go Back

Information

 
TitleHow to use dbx to obtain a stack trace when no core is dumped
URL NameP6238
Article Number000129466
EnvironmentProduct: Progress OpenEdge
Version: All supported versions
OS: UNIX
Question/Problem Description
How to use dbx to obtain a stack trace (if no core is dumped)!
How to produce an ascii file from a core file with dbx
How to get a readable trace when adb or sdb fails
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
This specifically explains how to produce an ascii file, when:
  • There is no core file dumped, or
  • adb/sdb fails.
When Progress generates the following error messages, it means that the UNIX kernel intercepted a system error, and is unable to continue.
  • SYSTEM ERROR: Bus error. (48)
  • SYSTEM ERROR: Memory violation. (49)
If a core file is produced, use adb or sdb to obtain a stack trace.

In some cases however, the core file cannot be analyzed by adb / sdb debuggers, or no core file is actually produced. In these cases, other tools can be employed to obtain this information. The commonly used tool is called the dbx module, which is a database abstraction layer (db 'X', where 'X' is a supported database) implemented in C. It may be used on most UNIX platforms. The following provides examples of how to use this tool, using the "tee" utility to store the display information in a file, called "trace.txt".

Important commands for the dbx tool:

Command Description
------- -----------------------------------------------
cont    Continue execution
where   Gives a stack trace, i.e. all internal functions called to this point in the program
quit    Quit dbx tool


To get the PID for the executable:

For reproducible cases, start the process with "&" to see the pid displayed: .

Example: $   DLC/bin/_mpro -zp &
Returns : The id of this process is 12345. (1408)

Otherwise, get the PID from the kernel with the "ps -aef" utility:

Example: ps -aef | grep _mprosrv
Returns : 12345 as the PID

Start DBX
Using the -a Option to attach to the process through it's PID and echo output to the trace.txt file:
 
$   dbx -a 12345 | tee trace.txt
 
Continue the process entering:
cont
 
At this stage, focus should have been given back to the process.
When the error occurs, the process will return back to the dbx tool.

To get a stack trace, type:
where

To quit dbx, type:
quit
 
The resulting "trace.txt" file can then be sent to Progress Software Technical Support for further analysis.

For the DG & SUN platforms, the commands are a little bit different:

Startup: dbx | tee trace.txt
Attach: debug <module> <pid>
Process: cont
Trace: where
Stop: quit

On a Sun platform, you have to type "Ctrl-C" to get back into the dbx tool, but otherwise it works similar.

Please refer to dbx documentation on your own system.
Workaround
Notes
References to Other Documentation:

Progress Article(s):
 
How to analyze a process crash or hang when the cause is unknown     
 
Keyword Phrase
Last Modified Date1/2/2021 10:50 PM

Powered by