[Devel] Re: lockdep complaint from ckpt-v15

Oren Laadan orenl at cs.columbia.edu
Fri May 8 11:50:43 PDT 2009


Hi Nathan,

This was observed before:
https://lists.linux-foundation.org/pipermail/containers/2009-February/015595.html
(and you replied :)

I believe it's a false alarm: the code takes the pipe's inode mutexthen takes
the same mutex (of a different inode) when writing data out
to the output file descriptor.

This could create a deadlock if the user provides the pipe's fd as the output
file; Howver, I protects against that by explicitly checking that the file of
the pipe isn't the file in ctx->file.

I'd be happy to learn how to tell lockdep to accept this behavior.

Oren.



Nathan Lynch wrote:
> I tried checkpointing a container (created with lxc tools) and while I
> didn't expect it to succeed, I did get this lockdep report.  Haven't
> looked into it yet, anyone else seeing this?
> 
> # uname -a Linux localhost.localdomain 2.6.30-rc3 #1 SMP Fri May 8 10:58:07 CDT 2009 i686 i686 i386 GNU/Linux
> # ./ckpt -c 3265 > /tmp/foo
> 
> =============================================
> [ INFO: possible recursive locking detected ]
> 2.6.30-rc3 #1
> ---------------------------------------------
> ckpt/3643 is trying to acquire lock:
>  (&sb->s_type->i_mutex_key#8){+.+.+.}, at: [<c02866ba>] generic_file_aio_write+0x59/0xc2
> 
> but task is already holding lock:
>  (&sb->s_type->i_mutex_key#8){+.+.+.}, at: [<c02b1b38>] pipe_file_checkpoint+0xd7/0x20d
> 
> other info that might help us debug this:
> 1 lock held by ckpt/3643:
>  #0:  (&sb->s_type->i_mutex_key#8){+.+.+.}, at: [<c02b1b38>] pipe_file_checkpoint+0xd7/0x20d
> 
> stack backtrace:
> Pid: 3643, comm: ckpt Not tainted 2.6.30-rc3 #1
> Call Trace:
>  [<c05f3c5a>] ? printk+0x14/0x16
>  [<c024db78>] __lock_acquire+0xc3e/0x132a
>  [<c024ab2b>] ? lock_release_holdtime+0x1a/0x172
>  [<c036143c>] ? avc_has_perm_noaudit+0x376/0x39d
>  [<c024e2ed>] lock_acquire+0x89/0xa6
>  [<c02866ba>] ? generic_file_aio_write+0x59/0xc2
>  [<c05f53be>] mutex_lock_nested+0x4e/0x274
>  [<c02866ba>] ? generic_file_aio_write+0x59/0xc2
>  [<c02866ba>] ? generic_file_aio_write+0x59/0xc2
>  [<c02866ba>] generic_file_aio_write+0x59/0xc2
>  [<c02f29e1>] ext3_file_write+0x1f/0x92
>  [<c02ab801>] do_sync_write+0xb0/0xee
>  [<c023d504>] ? autoremove_wake_function+0x0/0x38
>  [<c0362d29>] ? selinux_file_permission+0xa1/0xa5
>  [<c035d1a6>] ? security_file_permission+0x14/0x16
>  [<c02ab751>] ? do_sync_write+0x0/0xee
>  [<c02ac217>] vfs_write+0x8f/0x133
>  [<c024c48a>] ? trace_hardirqs_on_caller+0x119/0x13d
>  [<c0391d4c>] ckpt_kwrite+0x50/0x94
>  [<c03926a8>] ckpt_write_obj+0x44/0x77
>  [<c02b1b70>] pipe_file_checkpoint+0x10f/0x20d
>  [<c0391d4c>] ? ckpt_kwrite+0x50/0x94
>  [<c03963f4>] checkpoint_file+0x1e/0x21
>  [<c0392643>] checkpoint_obj+0xd2/0xf3
>  [<c0396b5f>] checkpoint_fd_table+0x16a/0x24d
>  [<c0394b12>] checkpoint_task+0x1a6/0x364
>  [<c0392f9a>] do_checkpoint+0x46d/0x5a7
>  [<c0391c44>] sys_checkpoint+0x6c/0x82
>  [<c0202af5>] syscall_call+0x7/0xb
> c/r: FILE users 4 != count 6
> _______________________________________________
> Containers mailing list
> Containers at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/containers
> 
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list