On Tue, May 13, 2008 at 4:43 PM, Jan Kiszka <[EMAIL PROTECTED]> wrote:
>
> Stéphane ANCELOT wrote:
> > Hi,
> > Using the v2.4.3 +kernel 2.6.24.7 I used the system("touch /tmp/xxx_ok")
> > call in a non realtime init context.
> >
> > The task is only used to allocate some memory heaps.
> >
> > I setted up some memory debugging features in the kernel :
> > CONFIG_DEBUG_KERNEL=y
> > CONFIG_DEBUG_SLAB=y
> > CONFIG_DEBUG_SLAB_LEAK=y
> > CONFIG_DEBUG_BUGVERBOSE=y
> > CONFIG_DEBUG_VM=y
> > CONFIG_FORCED_INLINING=y
> > CONFIG_EARLY_PRINTK=y
> > CONFIG_DEBUG_PAGEALLOC=y
> >
> > This was not happening with v2.4.2 although that the kernel debugging
> > flags were not "on"
> >
> > here is the bug trace :
> >
> > ------------[ cut here ]------------
> > kernel BUG at mm/rmap.c:602!
> > invalid opcode: 0000 [#1] PREEMPT DEBUG_PAGEALLOC
> > Modules linked in: usb_storage e100 mii
> >
> > Pid: 1628, comm: creven Not tainted (2.6.24.7-ipipe #3)
> > EIP: 0060:[<c017fb49>] EFLAGS: 00010246 CPU: 0
> > EIP is at page_dup_rmap+0x19/0x20
> > EAX: c115e760 EBX: c115e760 ECX: 08048000 EDX: cc6b1200
> > ESI: 09cbb025 EDI: 00000025 EBP: 08048000 ESP: cc709ec4
> > DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
> > Process creven (pid: 1628, ti=cc708000 task=cc6f6ac0 task.ti=cc708000)<0>
> > I-pipe domain Linux
> > Stack: 08003875 c017ae62 cc6b1200 cd5d9e70 cc6b4e70 cc6fa080 cc650080
> > 08057000
> > 08057000 c115e760 cd034120 c9cba120 00000000 00000000 08056fff
> > 00000000
> > 00000000 c9c6ec80 cc6b1200 00000000 cc6a6ac0 c0115b90 00000000
> > 00000000
> > Call Trace:
> > [<c017ae62>] copy_page_range+0x2b2/0x580
> > [<c0115b90>] copy_process+0x7a0/0x1000
> > [<c01165a7>] do_fork+0x47/0x210
> > [<c0100bb6>] sys_clone+0x36/0x40
> > [<c0102b89>] syscall_call+0x7/0xb
> > =======================
> > Code: 3b 4b 08 0f 93 c0 85 c0 75 ba 5b 89 c8 c3 8d 74 26 00 53 89 c3 83
> > 78 08 ff 74 10 f6 40 10 01 74 05 e8 3c f4 ff ff ff 43 08 5b c3 <0f> 0b
> > eb fe 8d 76 00 83 ec 1c 89 5c 24 0c 89 c3 89 74 24 10 89
> > EIP: [<c017fb49>] page_dup_rmap+0x19/0x20 SS:ESP 0068:cc709ec4
> > ---[ end trace b9f3cc48844f8a3b ]---
> > note: creven[1628] exited with preempt_count 2
> > BUG: scheduling while atomic: creven/1628/0x00000003
> > Pid: 1628, comm: creven Tainted: G D 2.6.24.7-ipipe #3
> > [<c036bed3>] schedule+0x283/0x390
> > [<c036d525>] rwsem_down_failed_common+0x75/0x190
> > [<c013cb10>] handle_edge_irq+0xc0/0x150
> > [<c036d68d>] rwsem_down_read_failed+0x1d/0x24
> > [<c036d6cb>] call_rwsem_down_read_failed+0x7/0xc
> > [<c036cb89>] down_read+0x9/0x10
> > [<c0118ed4>] exit_mm+0x24/0xd0
> > [<c011a632>] do_exit+0x112/0x800
> > [<c010410f>] die+0x21f/0x220
> > [<c0104523>] do_invalid_op+0x83/0x90
> > [<c017fb49>] page_dup_rmap+0x19/0x20
> > [<c0111998>] change_page_attr+0x2c8/0x300
> > [<c01119ed>] kernel_map_pages+0x1d/0x60
> > [<c0170472>] get_page_from_freelist+0x2c2/0x520
> > [<c010e78f>] __ipipe_handle_exception+0x7f/0x1c0
> > [<c036db5b>] error_code+0x6f/0x7c
> > [<c0170000>] setup_per_zone_pages_min+0x1b0/0x1f0
> > [<c017fb49>] page_dup_rmap+0x19/0x20
> > [<c017ae62>] copy_page_range+0x2b2/0x580
> > [<c0115b90>] copy_process+0x7a0/0x1000
> > [<c01165a7>] do_fork+0x47/0x210
> > [<c0100bb6>] sys_clone+0x36/0x40
> > [<c0102b89>] syscall_call+0x7/0xb
> > =======================
>
> This once fixed it for me, but we still need to take a closer look on
> this. Gilles, any news regarding this?
I am ready to test Tomas use case, to see if I can reproduce (and then
hopefully solve) the bug he met. I did not have a look at
page_add_new_anon_rmap yet, so I do not know if it is safe to be
called from copy_page_range.
--
Gilles
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help