Rockbox

Tasklist

FS#12404 - r31037 crashes device and sim after leaving FM Radio and resuming playback

Attached to Project: Rockbox
Opened by Michael Chicoine (mc2739) - Wednesday, 23 November 2011, 23:08 GMT
Last edited by Michael Chicoine (mc2739) - Wednesday, 23 November 2011, 23:11 GMT
Task Type Bugs
Category Themes
Status New
Assigned To No-one
Operating System Sansa e200
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No

Details

r31037 and later causes the device and sim to crash when resuming playback after leaving FM Radio. This crash has been reproduced on both e200v1 device and w32 sim and the e200v2 w32 sim. The failure is less likely to happen when there is a small number of files on the device/sim. (I have approximately 2200 files on the device and 5400 on the sim).

Tested with r30145

Steps to reproduce:
1. load the attached fms file (needs 35-Nimbus.fnt)
2. load an fm preset file - be sure to have station art
3. enter fm radio and select a preset station be sure art is displayed
4. power off device or sim
5. power on device or sim
6. start a playlist
7. stop playback
8. power off device or sim
9. power on device or sim
10. enter radio
11. exit radio
12. select resume playback
13. device or sim crashes

The e200v1 crash is:
Data abort
at 000095F0 (0)
This task depends upon

Comment by Michael Chicoine (mc2739) - Thursday, 24 November 2011, 17:48 GMT
This appears to be a problem with the radio art. Entering fm radio on a station without art and exiting and then resuming playback does not crash. Entering fm radio on a station without art and then selecting a station with art will cause a crash when exiting and then resuming playback.
Comment by Michael Chicoine (mc2739) - Thursday, 24 November 2011, 18:46 GMT
I was able to get the linux sim to fail. This is the gdb output:

Program received signal SIGSEGV, Segmentation fault.
0x08051724 in find_handle (handle_id=0)
at /home/rockbox/apps/buffering.c:401
401 (cached_handle->next->id == handle_id)) {
(gdb) bt
#0 0x08051724 in find_handle (handle_id=0)
at /home/rockbox/apps/buffering.c:401
#1 0x08051fb0 in close_handle (handle_id=0)
at /home/rockbox/apps/buffering.c:761
#2 0x08053699 in buffering_thread ()
at /home/rockbox/apps/buffering.c:1665
#3 0x080c8719 in bootstrap_context ()
at /home/rockbox/firmware/target/hosted/thread-unix.c:229
#4 0x080c86d6 in trampoline (sig=10)
at /home/rockbox/firmware/target/hosted/thread-unix.c:208
#5 <signal handler called>
#6 0x0012d422 in __kernel_vsyscall ()
#7 0x001f3914 in siglongjmp () from /lib/tls/i686/cmov/libpthread.so.0
#8 0x080c869c in make_context (ctx=0x1, f=0x82f6f68 <threads+1160>,
sp=0x8108cf8 "H\215\020\b.\223\f\b", <incomplete sequence \374>,
stack_size=135038802)
at /home/rockbox/firmware/target/hosted/thread-unix.c:191
#9 0x082d02d0 in thread_bufs ()
#10 0x00000001 in ?? ()
#11 0x082f6f68 in threads ()
#12 0x08108cf8 in voice_stack ()
#13 0x080c8752 in swap_context (old=0x90909090, new=0x57e58955)
at /home/rockbox/firmware/target/hosted/thread-unix.c:242
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)

Loading...