- Status Closed
- Percent Complete
- Task Type Bugs
- Category User Interface
- Assigned To No-one
- Operating System All players
- Severity High
- Priority Very Low
- Reported Version
- Due in Version Undecided
-
Due Date
Undecided
- Votes
- Private
FS#5662 - Dircache-related crash
Just as I thought it has gone away, the bug I hijacked #5570 for (or a very similar one) has recurred. Even better I can make it happen in the H300 simulstor!
I can make my H300 crash using the current CVS build if I do some file system navigation (down/down/right) immediately after boot up with dircache enabled. I’m not sure if this is voice related, but voice dirs are enabled. I’ve attached my config (see crash.cfg), although this may need the ipodColor.wps line removing to work on a plain CVS build (I’ll try that when I get time).
Anyway, if I crash the sim using this, I get the following:
Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 700.0x4a0]
0x00440f48 in strcasecmp (s1=0x366fbdd “ABBA”,
s2=0x55555555 <Address 0x55555555 out of bounds>) at common/strcasecmp.c:7
7 while (*s1 != ‘\\0’ && tolower(*s1) == tolower(*s2)) {
(gdb) bt
#0 0x00440f48 in strcasecmp (s1=0x366fbdd “ABBA”,
s2=0x55555555 <Address 0x55555555 out of bounds>) at common/strcasecmp.c:7
#1 0x00443f5f in dircache_get_entry (path=0x4ea2c8 “/ABBA”,
get_before=false, only_directories=true) at common/dircache.c:387
#2 0x00444c74 in opendir_cached (name=0x4ea2c8 “/ABBA”)
at common/dircache.c:1097
#3 0x0041a50e in ft_load (c=0x4ea2c8, tempdir=0×0) at filetree.c:220
#4 0x00416b16 in update_dir () at tree.c:323
#5 0x00417a33 in dirbrowse () at tree.c:944
#6 0x004169ac in browse_root () at tree.c:257
#7 0×00404430 in app_main () at main.c:108
#8 0x0044cb22 in sim_app_main (param=0×0) at uisdl.c:185
#9 0x6bfb0adc in SDL_RunThread (data=0×3383278)
at ../../../SDL-1.2.9/src/thread/SDL_thread.c:218
#10 0x6bfb0dd1 in RunThread (data=0×3383278) at SDL_systhread.c:44
#11 0x7c57b388 in lstrcmpiW () from /cygdrive/d/WINNT/system32/KERNEL32.DLL
#12 0x0022f7e0 in ?? ()
#13 0×00000600 in ?? ()
#14 0×03383278 in ?? ()
#15 0x7ffdc000 in ?? ()
#16 0x77f81310 in ?? ()
#17 0x0366ffc0 in ?? ()
#18 0x77f81310 in ?? ()
#19 0xffffffff in ?? ()
#20 0x7c5c1f54 in UTUnRegister () from /cygdrive/d/WINNT/system32/KERNEL32.DLL
#21 0x7c572b08 in WmiMofEnumerateResourcesW ()
from /cygdrive/d/WINNT/system32/KERNEL32.DLL
#22 0×00000000 in ?? () from
(gdb) print dircache_root
$1 = (struct dircache_entry *) 0x606b34
(gdb) print dircache_root[0].next
$2 = (struct dircache_entry *) 0×55555555
That 0×55555555 looks like an uninitialised entry, or is it a special value?
More details when I get time….
2006-08-03 11:42
Reason for closing: Accepted
Additional comments about closing: Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407
Now fixed in CVS.
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Another example back trace (FWIW):
#0 0x0043eff5 in strncpy (dst0=0×606310 “ÿó8Ä”,
#1 0x00444dda in readdir_cached (dir=0x25c6310) at common/dircache.c:1145
#2 0x0041a55a in ft_load (c=0x4ea2c8, tempdir=0×0) at filetree.c:229
#3 0x00416b16 in update_dir () at tree.c:323
#4 0x00417a33 in dirbrowse () at tree.c:944
#5 0x004169ac in browse_root () at tree.c:257
#6 0×00404430 in app_main () at main.c:108
…
This is only a problem if .talk clips are being used (for directories). If I disable thesem, or use the number/spell options, there is no crash.
Looks like something in the .talk handling is corrupting memory and this memory happens to contain the dircache.
Another clue - this doesn’t happen if voice menus are enabled and a voiced menu entry is played first. So maybe there is something not being properly initialised if .talk clips are used without voice menu playback?
This is fixed by patch #5690 - http://www.rockbox.org/tracker/task/5690.