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?

Jan

---
 mm/memory.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: b/mm/memory.c
===================================================================
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -502,7 +502,7 @@ copy_one_pte(struct mm_struct *dst_mm, s
                                pte = pte_mkclean(pte);
                        pte = pte_mkold(pte);
 
-                       page_dup_rmap(uncow_page, vma, addr);
+                       page_add_new_anon_rmap(uncow_page, vma, addr);
                        rss[!!PageAnon(uncow_page)]++;
                        goto out_set_pte;
                }

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to