This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#11995 - screendump problems caused by r29445
Attached to Project:
Rockbox
Opened by Michael Chicoine (mc2739) - Monday, 07 March 2011, 17:48 GMT+2
Opened by Michael Chicoine (mc2739) - Monday, 07 March 2011, 17:48 GMT+2
|
Detailsr29445 introduced problems with screendump on sansa e200 and e200v2 (and possibly more). Screendump works properly with r29444.
Steps to reproduce: 1. delete or backup existing .rockbox directory 2. install r29445 (or later) 3. reboot 4. navigate to System -> Debug (Keep Out!) -> Screendump and press select to enable 5. attach USB cable to trigger screendump On e200, this results in: *PANIC* Stkov usb (0) on e200v2, this results in a deadlock - no keypad response - backlight & button light never timeout. Upon reboot, multiple dump files exist. On e200v2 only, when dircache is disabled, screendump will function properly. |
This task depends upon
USB stack usage for various size increases (screendump works in all cases):
e200 increase 0x400 - 59%
e200 increase 0x200 - 75%
e200 increase 0x100 - 86%
e200 increase 0x080 - 96%
e200v2 increase 0x400 - 59%
e200v2 increase 0x200 - 75%
e200v2 increase 0x100 - 86%
e200v2 increase 0x080 - 94%
Should we commit a stack size increase by 0x100?
FS#12302e200 USB stack usage - 97%
e200v2 USB stack usage - 94%
A stack size increase has been committed to the release branch.
A lot of the stack is used by opendir_uncached(), which is called when opening a file for writing. It subtracts 0x224 from SP for local variables. What it's doing seems reasonable. However, you don't need stack space for creat() and linebuf[] at the same time, and that provides an opportunity for reducing stack usage.
Edit: This uses __builtin_alloca() to allocate linebuf after a successful creat(). It reduces stack usage in r31161 on my 5G 30GB iPod from 96% to 72%. I didn't do it for the remote because remotes seem to require less memory for linebuf, so there should be extra space due to that. It could easily be done for remotes also.