[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Debugng the flash watchdog problem
On Monday 03 April 2006 10:14, Mikael Starvik wrote:
> jffs2_scan_medium probably causes a lot of page faults for the pages it
> traverses and therefor you see mtd stuff and zlib stuff. I've made a
> modified watchog_brp implementation
> which dumps the stack to be able to retrieve the callstack to find the
> culprit who disables the interrupts.
OK, here's the output:
JFFS2: Erase block at 0x001a0000 is not formatted. It will be erased
jffs2_scan_empty(): Empty block at 0x001f0e94 ends at 0x001f0e94 (with
0xffdfffff)! Marking dirty
ERP 600DEE66
AD050ED2 57AEE724 2F9D613 EE879F67 9AE149CE 31454139 39333134 36360020 A
61989CA4 1 0 61988000 6000D300 A13156E3 61989CA4
2 24000000 1 6000D49E 24000000 61989CA4 60061056 24000000 61989CE0 1 0
61988000 6000D300 FFFFFFFF 6005F4C8 0
8DB0555 61F441B8 61C 8058C1A8 8DB0555 4F079084 50D6A1CA D110227E 82A5E863
E90F88FA AD050ED2 57AEE724 2F9D613 EE879F67 9AE149CE 0
400 6007CAD6 600DEE66 F F 0 61F44000 61F44000 0 61988000 800 603DAD6A 0
58BFC4 603DAD5A 58BFC4
17 17 E9848 61F22240 12 27 61948618 61F423A5 800 0 58BFC4 61988000 61F44000
800 60128178 603DAD20
60128178 800 0 61988000 0 0 0 61988000 0 0 6007FE6E 61989DD0 61F44000
61989E44 61F80CE8 61F44000
61F423A0 6005B892 61989DD0 61F44000 27 27BF80 844 61F80CE8 61948618 C002 0
C0021985 844 96E4AAA5 1B9 350
81A4 0 C4800 441A7AD7 441A7AD7 441A7AD7 C4000 800 800 0 A3C0CB3D 7ABE6724
6005B35C 61989E3C 61989E48 0
61948600 1 61F80CE8 61948618 61F80CF0 C A 27BF80 C0021985 844 96E4AAA5
6005AD84 61951F02 6195A000 61F80D3C 61F80CE8
61F80CE8 61F80C00 61F80CF0 6005D094 61F80D1C 61F80CE8 61F80C00 1 61F80D4C
6005A490 61F80C00 60118724 0 60114F08 61F80C28 1
0 61F80D1C 61F80D1C 6002509E 0 6195E000 6195A000 0 FFFFFFF4 6195C000
60118724 603F44C0 619C4420 603F43C0 603F44C0 FFFFFFF4
6195C000 9 1 6002525A 6195A000 61989F50 0 0 61989F50 6195E000 60033BC2
61989F50 0 6195C000 61F3A000 0
60033E0A 6195C000 6195A000 84710 0 C0ED0000 E9858 60033C72 61F3A000 0
619C4520 603F43C0 2000 E9858 60033C72 9
1 6003412C 6195A000 4FFFFF46 EB878 E9858 C0ED0000 0 6195A000 6195C000
6195E000 6005F366 E9848 B73E2 61989FA4 0
E9858 C0ED0000 4FFFFF46 EB878 FFFFFFDA 15 E9848 0 84710 0 4FFFFF46 EB878
E9858 C0ED0000 C0ED0000 E9848
5A0 B73E2 1AC26168 F0000180 1AC26160 1AAB44AE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
How do we get anything out of this?
A few addresses that occur in the stack, and are in the kernel's range:
objdump-cris -t os/linux/vmlinux | grep 60033
60033044 l F .text 00000028 next_mnt
6003306c l F .text 00000074 clone_mnt
6003310c l F .text 00000044 m_start
60033150 l F .text 0000002a m_next
6003317a l F .text 0000000c m_stop
60033186 l F .text 00000292 show_vfsmnt
600334e4 l F .text 000000bc do_umount
60033628 l F .text 00000028 mount_is_safe
60033650 l F .text 000000aa copy_tree
600336fa l F .text 0000011a graft_tree
60033814 l F .text 000000fe do_loopback
60033912 l F .text 0000008e do_remount
600339a0 l F .text 000001be do_move_mount
60033b5e l F .text 00000114 do_add_mount
60033c72 l F .text 000000a4 copy_mount_options
60033e22 g F .text 0000029e copy_namespace
6003342a g F .text 000000ba umount_tree
60033d16 g F .text 0000010c do_mount
600335a0 g F .text 00000080 sys_umount
60033418 g F .text 00000012 may_umount
60033620 g F .text 00000008 sys_oldumount
600330e0 g F .text 0000002c __mntput
objdump-cris -t os/linux/vmlinux | grep 6005a
6005a260 l F .text 00000082 jffs2_statfs
6005a2e2 l F .text 00000290 jffs2_read_super
6005a830 l F .text 0000007e mtd_fake_writev
6005a8ae l F .text 000000e6 writecheck
6005af0c l F .text 0000068c jffs2_scan_eraseblock
6005ad40 g F .text 000001cc jffs2_scan_medium
6005a168 g F .text 000000e8 jffs2_clear_inode
6005a632 g F .text 0000003a jffs2_write_super
6005a5de g F .text 00000054 jffs2_remount_fs
6005a680 g F .text 000001b0 jffs2_new_inode
6005a994 g F .text 000001b0 jffs2_write_dnode
6005ab44 g F .text 000001ec jffs2_write_dirent
6005a572 g F .text 0000006c jffs2_put_super
objdump-cris -t os/linux/vmlinux | grep 6005d
6005d736 l F .text 000000d0 jffs2_erase_callback
6005d806 l F .text 00000044 jffs2_free_all_node_refs
6005dc7e l F .text 0000007a jffs2_remove_node_refs_from_ino_list
6005dfda l F .text 00000022 thread_should_wake
6005de54 l F .text 00000186 jffs2_garbage_collect_thread
6005d240 g F .text 00000184 jffs2_build_inode_pass1
6005d3c4 g F .text 000000ac jffs2_build_remove_unlinked_inode
6005d046 g F .text 00000034 jffs2_follow_link
6005dd4c g F .text 000000bc jffs2_start_garbage_collect_thread
6005d856 g F .text 00000428 jffs2_mark_erased_blocks
6005d84a g F .text 0000000c jffs2_erase_pending_trigger
6005d07c g F .text 000001c4 jffs2_build_filesystem
6005dcf8 g F .text 00000054 jffs2_garbage_collect_trigger
6005d63a g F .text 000000fc jffs2_erase_pending_blocks
6005d00a g F .text 0000003c jffs2_readlink
6005d470 g F .text 000001ca jffs2_erase_block
6005de08 g F .text 0000004c jffs2_stop_garbage_collect_thread
objdump-cris -t os/linux/vmlinux | grep 6005b
6005bed0 l F .text 000000b4 jffs2_rotate_lists
6005b598 l F .text 00000126 jffs2_scan_empty
6005b74e l F .text 00000416 jffs2_scan_inode_node
6005bb64 l F .text 0000032a jffs2_scan_dirent_node
6005b6be l F .text 00000090 jffs2_scan_make_ino_cache
6005be8e l F .text 00000014 count_list
6005bea2 l F .text 0000002e rotate_list
6005bfa0 l F .text 000000ba jffs2_find_gc_block
objdump-cris -t os/linux/vmlinux | grep 600610
6006102a l F .text 0000009c timer_interrupt
60061002 g F .text 00000028 update_xtime_from_cmos
600610e0 g F .text 00000032 sys_pipe
objdump-cris -t os/linux/vmlinux | grep 6007f
6007f2d8 l F .text 000000e6 mtd_read_proc
6007f3c0 l F .text 000000ae concat_read
6007f46e l F .text 000000cc concat_write
6007f53a l F .text 0000000e concat_erase_callback
6007f548 l F .text 000000b2 concat_dev_erase
6007f5fa l F .text 00000206 concat_erase
6007f800 l F .text 000000aa concat_lock
6007f8aa l F .text 000000a8 concat_unlock
6007f952 l F .text 00000036 concat_sync
6007f988 l F .text 00000044 concat_suspend
6007f9cc l F .text 00000038 concat_resume
6007fe00 l F .text 00000074 part_read
6007fe74 l F .text 00000074 part_point
6007fee8 l F .text 00000034 part_unpoint
6007ff1c l F .text 00000084 part_read_ecc
6007ffa0 l F .text 00000074 part_read_oob
6007fa04 g F .text 000003d0 mtd_concat_create
6007fdd4 g F .text 00000026 mtd_concat_destroy
6007f07a g F .text 000000b2 unregister_mtd_user
6007f002 g F .text 00000078 register_mtd_user
6007f1bc g F .text 0000008e default_mtd_writev
6007f24a g F .text 0000008e default_mtd_readv
6007f12c g F .text 00000090 __get_mtd_device
objdump-cris -t os/linux/vmlinux | grep 600dee
600dee06 l .text 00000000 _no_fold
600dee1a l .text 00000000 _no_words
600dee0e l .text 00000000 _wloop
600dee24 l .text 00000000 _do_byte
600dee30 g F .text 0000019e memcpy