[PATCH] c/r: fix "scheduling in atomic" while restoring ipc shm

Nikita V. Youshchenko yoush at cs.msu.su
Tue Mar 2 06:50:46 PST 2010


> Hi Nikita,
>
> Thanks for the report and the analysis. It actually helped to
> pinpoint a couple of other minor issues in the code. This patch
> should fix all of these.
>
> Oren.

Hi Oren.

With ckpt-v19 plus this patch applied, we still are getting a kernel
crash, with BUG() fired at
+       ipc = idr_find(&msg_ids->ipcs_idr, h->perms.id);
+       BUG_ON(!ipc);
added by the patch.

By looking at the code, I can't understand how this idr_find() can at
all succeed, if the namespace it is looking in was just created and
is empty.

What code adds object in question into this idr?

Any hints?

Nikita

...
[   60.321860] [430:430:c/r:ckpt_read_obj_dispatch:254] type 502 len 120
[   60.322489] [430:430:c/r:ckpt_read_obj:383] type 502 len 120(120,120)
[   60.323140] [430:430:c/r:restore_ipc_shm:226] shm: do_shmget size 790528 flag 0x7a4 id 32769
[   60.324257] [430:430:c/r:restore_ipc_shm:228] shm: do_shmget ret 32769
[   60.325573] ------------[ cut here ]------------
[   60.326059] kernel BUG at ipc/checkpoint_shm.c:274!
[   60.326564] invalid opcode: 0000 [#1] PREEMPT SMP
[   60.327124] last sysfs file:
[   60.327480] Modules linked in:
[   60.327903]
[   60.328104] Pid: 430, comm: bash Not tainted 2.6.33-rc8 #2 /
[   60.328104] EIP: 0060:[<c10e0abe>] EFLAGS: 00000246 CPU: 0
[   60.328104] EIP is at restore_ipc_shm+0x1a0/0x35a
[   60.328104] EAX: 00000000 EBX: 00000000 ECX: 00000005 EDX: c789ba58
[   60.328104] ESI: 00008001 EDI: c793d640 EBP: c79ac000 ESP: c7991dbc
[   60.328104]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[   60.328104] Process bash (pid: 430, ti=c7990000 task=c7855b70 task.ti=c7990000)
[   60.328104] Stack:
[   60.328104]  c129da9c c79ac000 000c1000 00000000 c129db00 000001ae 000001b4 000c1000
[   60.328104] <0> 00000000 c124dde1 000001ae 00000001 00000000 c7940c00 c79ac000 c10e036d
[   60.328104] <0> 00000002 c129da9c ffffffef c129da9c c799ac60 c79ac000 c10e048a 000001f6
[   60.328104] Call Trace:
[   60.328104]  [<c10e036d>] ? restore_ipc_any+0xa5/0x119
[   60.328104]  [<c10e048a>] ? restore_ipc_ns+0xa9/0x112
[   60.328104]  [<c10e091e>] ? restore_ipc_shm+0x0/0x35a
[   60.328104]  [<c10feb48>] ? restore_obj+0x98/0x116
[   60.328104]  [<c11007ed>] ? ckpt_read_obj_dispatch+0x220/0x246
[   60.328104]  [<c1100829>] ? ckpt_read_obj+0x16/0xe8
[   60.328104]  [<c107b866>] ? fsnotify_access+0x5a/0x61
[   60.328104]  [<c110097d>] ? ckpt_read_obj_type+0x16/0x70
[   60.328104]  [<c1039ab8>] ? restore_ns+0x18/0x12b
[   60.328104]  [<c10feb48>] ? restore_obj+0x98/0x116
[   60.328104]  [<c11007ed>] ? ckpt_read_obj_dispatch+0x220/0x246
[   60.328104]  [<c1100829>] ? ckpt_read_obj+0x16/0xe8
[   60.328104]  [<c110097d>] ? ckpt_read_obj_type+0x16/0x70
[   60.328104]  [<c11033fb>] ? restore_task+0x512/0x9fc
[   60.328104]  [<c1101b59>] ? do_restart+0xff4/0x12f3
[   60.328104]  [<c10364f0>] ? autoremove_wake_function+0x0/0x2d
[   60.328104]  [<c10fdb21>] ? do_sys_restart+0x66/0x77
[   60.328104]  [<c10027d5>] ? ptregs_restart+0x15/0x1c
[   60.328104]  [<c10026d0>] ? sysenter_do_call+0x12/0x26
[   60.328104] Code: fe ff ff e9 c8 01 00 00 8b 04 24 83 c0 64 89 44 24 10 e8 dd 16 10 00 8b 57 10 8b 04 24 83 c0 
74 e8 24 71 02 00 85 c0 89 c3 75 04 <0f> 0b eb fe 8b 68 2c 8d 45 18 3e ff 45 18 8b 44 24 04 8d 57 08
[   60.328104] EIP: [<c10e0abe>] restore_ipc_shm+0x1a0/0x35a SS:ESP 0068:c7991dbc
[   60.351332] ---[ end trace 9660dfa05be59307 ]---



More information about the Containers mailing list