• Status Closed
  • Percent Complete
  • Task Type Bugs
  • Category Codecs
  • Assigned To No-one
  • Operating System iPod 5G
  • Severity Low
  • Priority Very Low
  • Reported Version Version 3.1
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by ajb - 2009-01-02
Last edited by zagor - 2009-01-07

FS#9745 - Selecting a .m4a crashes with "Undefined instruction at 40000184 (0)"

While selecting a m4a for playing it crashes. Works on ipod sim build.

Closed by  zagor
2009-01-07 19:56
Reason for closing:  Not a Bug
Additional comments about closing:  

Mystery solved.

ajb commented on 2009-01-02 12:46

Tested and failed on clean Subversion Build: r19641

ajb commented on 2009-01-02 13:17

Tested with files from:

Sample01/Bartok_strings2_4.m4a: hangs player in WPS
Sample02/Big Yellow2.m4a: crash with Undefined instruction

ajb commented on 2009-01-02 13:22

Disabled Cross Fade and get a different crash:

Sample02/Big Yellow4.m4a : Undefined instruction at 40017f24

ajb commented on 2009-01-02 13:36

From: This file fails on my actual Rockbox. Slightly different failure mechanism depending on Crossfade settings

e250 dosent freeze, it just slows down, and the audio gets choppy

cpu98 commented on 2009-01-03 00:10

Did you build using GCC 4.3.0?

ajb commented on 2009-01-03 11:05

11:04 alex@danny/x86_64 [] >~/tools/arm-elf/bin/arm-elf-gcc-4.0.3 –version
arm-elf-gcc-4.0.3 (GCC) 4.0.3
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO

IIRC it was built with the rockboxdev build script. Is this a known issue?

cpu98 commented on 2009-01-03 16:45

I’m having similiar problems(Undef instr…) on mpa codec with GCC 4.3.0 after r19612.
Codecs built before that works for me.
Official build works of course.
You may test 19611 and 19612. may help?

ajb commented on 2009-01-03 18:46

r19611: Crash: Unidentified Instruction at 400164848 (0)
Map attached.

ajb commented on 2009-01-03 19:03

r19661: Crash “Prefetch abort at 41CBCD98 (0)”

cpu98 commented on 2009-01-04 07:38

Oh, sorry that seems not related to my issue.
Mine plays that file without problems.

cpu98 commented on 2009-01-04 08:27

For mpa mapping was ./apps/codecs/
for m4a it would be ./apps/codecs/
I can’t interpret that file much.

cpu98 commented on 2009-01-04 08:49

Sorry I though that file was apple lossless.
Codec would be ./apps/codecs/aac.codec
You may replace that file for workaround.
Mapping would be ./apps/codecs/
I’m not sure how map could help,
but that might let you know where the problem is…

BigYellow_4.m4a works fine with r19667 (edit: er, I mean r19605 of course ;) on my Sansa e200… Tried with default settings?
I’ll check a few more from the test archive, just in case.

ajb commented on 2009-01-07 12:44

Damn seems to be a compiler toolchain issue. Works with official binaries: r19705

ajb commented on 2009-01-07 16:57

Comparing my aac.codec with the official build there are only a few bytes difference:

03e806d4 <codec_start>:
3e806d4: e92d4010 push {r4, lr}
3e806d8: e1a04000 mov r4, r0
3e806dc: e59f3068 ldr r3, [pc, #104] ; 3e8074c <codec_start+0×78>
3e806e0: e1a00003 mov r0, r3
3e806e4: e59f1064 ldr r1, [pc, #100] ; 3e80750 <codec_start+0x7c>
3e806e8: e59f2064 ldr r2, [pc, #100] ; 3e80754 <codec_start+0×80>
3e806ec: e0632002 rsb r2, r3, r2
3e806f0: e1a0e00f mov lr, pc
3e806f4: e594f094 ldr pc, [r4, #148]
3e806f8: e59f3058 ldr r3, [pc, #88] ; 3e80758 <codec_start+0×84>
3e806fc: e1a00003 mov r0, r3
3e80700: e3a01000 mov r1, #0 ; 0×0 3e80704: e59f2050 ldr r2, [pc, #80] ; 3e8075c <codec_start+0×88>
3e80708: e0632002 rsb r2, r3, r2
3e8070c: e1a0e00f mov lr, pc
3e80710: e594f090 ldr pc, [r4, #144]
3e80714: e59f3044 ldr r3, [pc, #68] ; 3e80760 <codec_start+0x8c>
3e80718: e1a00003 mov r0, r3
3e8071c: e3a01000 mov r1, #0 ; 0×0 3e80720: e59f203c ldr r2, [pc, #60] ; 3e80764 <codec_start+0×90>
3e80724: e0632002 rsb r2, r3, r2
3e80728: e1a0e00f mov lr, pc
3e8072c: e594f090 ldr pc, [r4, #144]
3e80730: e59f3030 ldr r3, [pc, #48] ; 3e80768 <codec_start+0×94>
3e80734: e5834000 str r4, [r3]
3e80738: ebffffd7 bl 3e8069c <flush_icache>
3e8073c: e59f3028 ldr r3, [pc, #40] ; 3e8076c <codec_start+0×98>
3e80740: e1a0e00f mov lr, pc
3e80744: e12fff13 bx r3
3e80748: e8bd8010 pop {r4, pc}
3e8074c: 4000c000 andmi ip, r0, r0
3e80750: f3ea5ec0 undefined instruction 0xf3ea5ec0
3e80754: 40011818 andmi r1, r1, r8, lsl r8
3e80758: 40011818 andmi r1, r1, r8, lsl r8
3e8075c: 40016818 andmi r6, r1, r8, lsl r8
3e80760: 03ea5ec0 mvneq r5, #3072 ; 0xc00
3e80764: 03ec5f70 mvneq r5, #448 ; 0x1c0
3e80768: 03eadf94 mvneq sp, #592 ; 0×250 3e8076c: 03e800c4 mvneq r0, #196 ; 0xc4
3e80770: e92d4030 push {r4, r5, lr}
3e80774: e1a0c000 mov ip, r0

With the undefined instruction in codec_start.

This leads to two questions:

1. How is this address related to what was actually reported
2. Why does my compiler hate me?

ajb commented on 2009-01-07 19:42

Mystery solved. I had a Gentoo cross-dev 2.18 binutils in my path which took precedence and b0rked the build

ajb commented on 2009-01-07 19:47

Testing with binutils 2.19 and it seems to generate a correct codec file with the right constant for plugin_bss_start


Available keyboard shortcuts


Task Details

Task Editing