This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#6010 - Rockbox crash due to context menu recursion
Attached to Project:
Rockbox
Opened by David (aw3se4dr5) - Sunday, 17 September 2006, 16:30 GMT+2
Last edited by Steve Bavin (pondlife) - Friday, 29 September 2006, 09:19 GMT+2
Opened by David (aw3se4dr5) - Sunday, 17 September 2006, 16:30 GMT+2
Last edited by Steve Bavin (pondlife) - Friday, 29 September 2006, 09:19 GMT+2
|
DetailsI can't really say what happens, but i can show you how to get to it.
1. Go To "Browse Plugins" Menu 2. Access the context menu of any plugin (Playlist, Playlist Catalogue, rename, delete, ...) [edited for clarity --RaeNye] 3. Press menu (or whatever button takes you to the main menu) 4. Go back to step 1 and repeat. 5. if you do it right, rockbox freezes and playback stops |
This task depends upon
After 7 iterations, I got I40: PDIR1FULL at 00000007.
This happens on any 'Browse XXX' menu (I tried with plugins and themes).
Are just going into and out of the context menu? How many repeats, roughly? (10? 100?)
To reproduce, repeat the key sequence "REC, UP, UP, RIGHT, long SELECT" ~5 times
I'm not familiar with the menu code, but it looks like this recurses through the following routines:
(...)
(#33 0x0040559b in main_menu () at main_menu.c:433)
#34 0x00408276 in onplay (file=0x369fb8c "/.rockbox/rocks/alpine_cdc.rock",
attr=2048, from=2) at onplay.c:995
#35 0x0041901c in dirbrowse () at tree.c:817
#36 0x00419b33 in rockbox_browse (root=0x45c1f9 "/.rockbox/rocks",
dirfilter=13) at tree.c:1210
#37 0x00405309 in plugin_browse () at main_menu.c:286
#38 0x00405915 in menu_run (m=0) at menu.c:183
#39 0x0040559b in main_menu () at main_menu.c:433
This results in a stack overflow.
I would guess the problem lies in onplay.c, lines 994-995. Somehow this should be returning a special value to result rather than continuing inwards. Someone who knows this code will need to take over though!
FS#6189seems to fix it but makes my device do weird things when reproducing this issue. Seems not to be the correct fix...(it eventually crashed too)