0201 error with latest firmware - debugging

Got a problem with your Pacemaker?
Don't worry, post here and we might be able to help out!
Post Reply
rj200

0201 error with latest firmware - debugging

Post by rj200 » Wed Jul 01, 2015 8:39 pm

I recently tried the latest firmware (from Feb 2014). It randomly crashes with an unexpected error 0201. There doesn't seem to be any one action that causes it; it's pretty random.

Anyway - I found that it drops a core-dump file in .Pacemaker/dumps on the device!

I copied these and the firmware onto my Linux laptop. There I was able to open them in gdb. The process was:

sudo mkdir /pmds
sudo mount -o loop ~/Downloads/dfw_146061537.pfw /pmds/
sudo mkdir /pacemaker-cramfs
sudo mount -o loop /pmds/boot/cramfs.little /pacemaker-cramfs/

sudo apt-get install gdb-multiarch
gdb-multiarch
(gdb) set gnutarget elf32-littlearm
(gdb) file /pmds/bin/pmplayer
(gdb) set sysroot /pacemaker-cramfs
(gdb) target core ~/core_1.pmplayer.1729.146061537

This then tells us why it died:
Program terminated with signal SIGILL, Illegal instruction.

You can get a backtrace of the stack:
(gdb) bt
#0 0xbef6267c in ?? ()
#1 0x003b308c in ?? ()
#2 0x003b4280 in du::TextBox::paint(screener::JUCERGBRasterizer&, juce::String const*, int, int, unsigned int, bool) ()
#3 0x003d3a98 in TrackArea::renderTime(screener::JUCERGBRasterizer&, du::TextBox&, unsigned int, bool&) ()
#4 0x003d6ac4 in UpperStatusArea::render(screener::JUCERGBRasterizer&) ()
#5 0x00396470 in SubWindow::paint(juce::Graphics&) ()
#6 0x0077a748 in juce::Component::paintEntireComponent(juce::Graphics&) ()
#7 0x0077a684 in juce::Component::paintEntireComponent(juce::Graphics&) ()
#8 0x0077a684 in juce::Component::paintEntireComponent(juce::Graphics&) ()
#9 0x0078ac4c in juce::ComponentPeer::handlePaint(juce::LowLevelGraphicsContext&) ()
#10 0x00775ab4 in juce::LinuxRepaintManager::performAnyPendingRepaintsNow() ()
#11 0x00775b48 in juce::repaintAllComponentPeers() ()
#12 0x007ba1c8 in juce::IHpTimerInternal::dispatch() ()
#13 0x007b9610 in juce::InactivityThread::timerMillisecsUntilFire() ()
#14 0x00774124 in juce::juce_dispatchNextMessageOnSystemQueue(bool) ()
#15 0x007b825c in juce::MessageManager::dispatchNextMessage(bool, bool*) ()
#16 0x007b8328 in juce::MessageManager::runDispatchLoop() ()
#17 0x007781cc in juce::JUCEApplication::main(juce::String&, juce::JUCEApplication*) ()
#18 0x00778470 in juce::JUCEApplication::main(int, char**, juce::JUCEApplication---Type <return> to continue, or q <return> to quit---
*) ()
#19 0x0037de68 in main ()

We can also view the registers:
(gdb) info all-registers
r0 0x0 0
r1 0x44e006a8 1155532456
r2 0x44e006ac 1155532460
r3 0xbe936650 3197331024
r4 0x44e006ac 1155532460
r5 0xbe936660 3197331040
r6 0x44e006c0 1155532480
r7 0x44e006a8 1155532456
r8 0x2007 8199
r9 0xc240ec 12730604
r10 0x0 0
r11 0xbe93665c 3197331036
r12 0x44e006ac 1155532460
sp 0xbe936560 0xbe936560
lr 0x3b308c 3879052
pc 0xbe93667c 0xbe93667c
cpsr 0x20000010 536870928



The stack trace looks basically the same for each crash. From this I can guess that it is a bug in the GUI code. The 'Illegal Instruction' could be relevant; perhaps some code for a later version of the ARM chip has accidentelly been included?

How is the best way to get this to a developer who might fix it? Without source code I can't do much more myself. Is there anyone I could send the core dumps to?

Sox
Admin Sox
Admin Sox
Posts: 347
Joined: Fri Sep 14, 2012 9:25 pm
Location: Bath, England
Contact:

Re: 0201 error with latest firmware - debugging

Post by Sox » Wed Jul 08, 2015 10:00 am

Well done on the investigation so far. First time we've seen a crash dump such as this.

I have Daniel (the developer) and Jonas' email addresses so if you send them to me I will forward them on. I will pm you my email address

Sox
Never experiment with drugs.... you might waste them

rj200

Re: 0201 error with latest firmware - debugging

Post by rj200 » Wed Jul 08, 2015 5:28 pm

I've sent them. It's a 22GB zip file attachment. Let me know if it doesn't arrive.

Sox
Admin Sox
Admin Sox
Posts: 347
Joined: Fri Sep 14, 2012 9:25 pm
Location: Bath, England
Contact:

Re: 0201 error with latest firmware - debugging

Post by Sox » Sat Jul 11, 2015 9:56 pm

That's rediculous. 220Gb zipped? Your Pacemaker woukd only hold 220 before zipping. Email will never send that much, and I don't want anything that size.

Try contact Pacemaker direct via their site to see if they are interested in what you have. Daniel is the develooer.
Never experiment with drugs.... you might waste them

rj200

Re: 0201 error with latest firmware - debugging

Post by rj200 » Sat Jul 11, 2015 11:53 pm

Sorry, 22MB I meant to write! If it didn't get through via email then I have uploaded to wetransfer: http://we.tl/YbI1AX3bNk (link lasts 1 week)

Sox
Admin Sox
Admin Sox
Posts: 347
Joined: Fri Sep 14, 2012 9:25 pm
Location: Bath, England
Contact:

Re: 0201 error with latest firmware - debugging

Post by Sox » Sun Jul 12, 2015 9:32 am

Ok I'll pass on that link.
Never experiment with drugs.... you might waste them

Post Reply