Dialogic Support Helpweb
Dialogic® DM3 & JCT Media Boards
How to Correlate DM3 and JCT DebugAngel and Device Map Dump Logs
Summary:
The purpose of this document is to show how to use a DebugAngel log and a Device Map Dump (devmapdump) to determine on which device a particular firmware failure occurred. This information can then be used to filter an application log and focus on the specific problematic device.
Symptom / Problem:
When running DebugAngel on a system with either Dialogic® Host Media Processing Software or Dialogic® DM3 Media Boards, firmware warning and error messages, will be captured in the DebugAngel log. Because of the language structure or syntax recorded to the logs, it is not possible to determine on which specificdevice an error occurred, with the DebugAngel log alone. Using Device Map Dump with DebugAngel will help you identify the specific Dialogic® board where the problem occurred.
Fix / Solution:
By capturing a Device Map Dump (devmapdump), you can correlate the DebugAngel error to the Dialogic device occurred on the voice resource dxxxB4C4. The application/RTF log for this device can be filtered and the behavior of this device prior to the failure can be studied:
Use case #1
First, we need to find the “source” line in the DebugAngel message header after the error occurs:
11:50:20.046| 000:CP1:***************************
11:50:20.093| 000:CP1:QERROR_WARNING(2) qkernerr.h 31024 qkernerr.h 31005
11:50:20.093| 000:CP1: Error Level : WARNING
11:50:20.093| 000:CP1: Location Tag: 31024, Location File: qkernerr.h
11:50:20.093| 000:CP1: Cause-Tag : 31005, Error File :qkernerr.h
11:50:20.093| 000:CP1: TaskName is Player
11:50:20.093| 000:CP1:ERROR- Mso Manager, Message Undeliverable!
11:50:20.093| 000:CP1:Warning: above information may indicate more than one event.
11:50:20.093| 000:CP1:***************************
11:50:20.093| 000:CP1:Message Header, printed by a task Player
11:50:20.093| 000:CP1:encoding 0x2
11:50:20.093| 000:CP1:priority 0x43
11:50:20.093| 000:CP1:version 0x65
11:50:20.093| 000:CP1:transaction 0x108
11:50:20.093| 000:CP1:source 0:0:1:11:16, task name Player
11:50:20.093| 000:CP1:destination 0:0:3:7:1, task name unavailable
11:50:20.093| 000:CP1:type 0x8
11:50:20.093| 000:CP1:size 8
11:50:20.093| 000:CP1:***************************
The address in this line has the following format:
<node> : <logical ID of board> : <processor> : <component> : <instance>
So, in the above example of 0:0:1:11:16,
node = 0
logical ID = 0
processor = 1
component = 11
instance = 16
Then retrieve a device map dump from the problematic machine. To output this to a text file, make sure the Dialogic® services are started, and then go to the command line and type devmapdump > [path]\[filename].txt where [path] is the desired drive and path of the output location, and [filename] is the desired filename. For example: devmapdump > C:\temp\devmap1.txt
The device map dump has a complex address display format where the values are in hex. They are listed here as follows:
<instance> <board> <pad1> <processor> <component> <node> <pad 2>
Each of the values is 8 bits, except for the <instance> value. This is 16 bits, but it is displayed with the least significant BYTE first. So for example a value of 0F 00 would correspond to a decimal value of 15.
From the DebugAngel log, it is known that we are looking for a Player address, with a decimal <instance> value of 16. Converting this to hex, and putting in a least significant byte first format, we know that this will show up in the device map dump as 10 00. Searching through the device map dump, the following information is found:
\-- <dxxxB4C4> -- <50149>
| | CALLANALYSISADDR = 10 00 00 01 01 11 00 77
| | CALLERIDADDR = 10 00 00 00 01 10 00 77
| | CLUSTERADDR = 9B 00 00 00 01 03 00 00
| | CTBUSADDR = 88 00 00 00 01 04 00 77
| | CTBus_RcvTimeslot = FF FF FF FF
| | CTBus_TxTimeslot = 87 00 00 00
| | CTBus_TxTimeslot_Port2 = FF 00 00 00
| | CTPLATFORM = DM3
| | EncodingType = 01 00 00 00
| | FEPADDR = 10 00 00 00 01 0F 00 77
| | FrontEndType = 02 00 00 00
| | JACK_NUMBER = 00 00 00 00
| | NAME = dxxxB4C4
| | OpenCount = 00 00 00 00
| | PLAYERADDR = 10 00 00 00 01 0B 00 77
| | R4_VISIBLE = 01 00 00 00
| | RECORDERADDR = 10 00 00 00 01 0C 00 77
| | SIGBUFADDR = 10 00 00 01 01 09 00 77
| | SIGDETADDR = 10 00 00 70 01 05 00 00
| | SerialNumber = GG007175
| | TDMBusType = 06
| | TONEGENADDR = 10 00 00 00 01 12 00 77
| | TYPE = F6 01 00 00
| | VoiceFeatureE2P = 00 03
| | VoiceFeatureFrontend = 0C 00
Showing us that the failure occurred on the voice resource dxxxB4C4
Use Case #2
It is not always necessary to find a "source" line in the DebugAngel log. To illustrate this, the next example shows only one line of error information in the DebugAngel log:
14:05:51.249|
000:CP1:playerInst
48 ignoring unexpected Start message 128H in state 5
Compared to the previous example, this is a simpler DebugAngel message and we know right away that we will be searching the devmapdump for a PLAYERADDR with a decimal value of 48 (hex value of
30).
When multiple boards are in the system, there will be duplicate PLAYERADDR values in the devmapdump file between boards. To find out which board the error is occuring on, we notice the
000 value after the timestamp, and then check the DebugAngel log to find the corresponding board, shown here:
14:04:43.652| 000: Status: BI= 0 State= 4 (RUNNING ) Dead=0
14:04:43.652|
000: 000: (GG005123)
DMV600BTEP 2 (76/1|224) E=1
14:04:43.652| 000: Start on this board
14:04:43.652| 000: 000: (GG005123) DMV600BTEP 2 (76/1|224) E=1
14:04:43.652| 001: Status: BI= 1 State= 4 (RUNNING ) Dead=0
14:04:43.652| 001: 001: (HX005548) DMV600A_2E1 1 (66/1|226) E=1
14:04:43.652| 001: Start on this board
14:04:43.652| 001: 001: (HX005548) DMV600A_2E1 1 (66/1|226) E=1
14:04:43.652| 002: Status: BI= 2 State= 4 (RUNNING ) Dead=0
14:04:43.652| 002: 002: (HX012187) DMV600A_2E1 0 (45/1|225) E=1
14:04:43.652| 002: Start on this board
14:04:43.668| 002: 002: (HX012187) DMV600A_2E1 0 (45/1|225) E=1
14:04:43.699| 002: Attached
As you see, the error is occurring on the Dialogic® DMV600BTEP board. All information related to other boards in the devmapdump can be deleted, thus eliminating the possibility of duplicate PLAYERADDR values. Parsing this particular board information in the devmapdump for a PLAYERADDR hex value of
30 00, we find that it matches up with
dxxxB12C4:
| | | \-- <
dxxxB12C4> -- <50131>
| | | | | CALLANALYSISADDR = 30 00 00 00 01 10 00 06
| | | | | CALLERIDADDR = 30 00 00 00 01 0E 00 00
| | | | | CLUSTERADDR = 8E 00 00 00 01 03 00 00
| | | | | CTBUSADDR = 6E 00 00 00 01 04 00 06
| | | | | CTBus_RcvTimeslot = FF FF FF FF
| | | | | CTBus_TxTimeslot = 2F 01 00 00
| | | | | CTBus_TxTimeslot_Port2 = 6B 01 00 00
| | | | | CTPLATFORM = DM3
| | | | | EncodingType = 01 00 00 00
| | | | | FEPADDR = 30 00 00 00 01 0D 00 00
| | | | | FrontEndType = 02 00 00 00
| | | | | JACK_NUMBER = 00 00 00 00
| | | | | NAME = dxxxB12C4
| | | | | OpenCount = 00 00 00 00
| | | | |
PLAYERADDR = 30 00 00 00 01 0C 00 00
| | | | | R2MFPADDR = 30 00 00 00 01 11 00 00
| | | | | R4_VISIBLE = 01 00 00 00
| | | | | RECORDERADDR = 30 00 00 00 01 0B 00 06
| | | | | SIGBUFADDR = 30 00 00 00 01 09 00 00
| | | | | SIGBUFADDR_DTMF = 30 00 00 00 01 07 00 00
| | | | | SIGBUFADDR_MF = 30 00 00 00 01 08 00 00
| | | | | SIGDETADDR = 30 00 00 00 01 05 00 00
| | | | | SerialNumber = GG005123
| | | | | TDMBusType = 06
| | | | | TONEGENADDR = 30 00 00 00 01 12 00 00
| | | | | TYPE = F6 01 00 00
| | | | | VoiceFeatureE2P = 00 03
| | | | | VoiceFeatureFrontend = 7D 00 <}>
Product List
Dialogic® HMP Software
Dialogic® DM3 Media Boards
Glossary of Acronyms / Terms
DebugAngel: Diagnostic tool which logs firmware messages from DM3 boards and HMP software
Devmapdump: "Device Map Dump", command line diagnostic tool which outputs all of the Dialogic device names currently in use. Dialogic Configuration Manager (DCM) services must be started prior to running this.
Feedback