lkml.org 
[lkml]   [2010]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Subject[2.6.31 and later] "struct pid" leak.
    From
    Date
    I got below report with 2.6.33.1 .

    unreferenced object 0xde144600 (size 64):
    comm "init", pid 1, jiffies 4294678101 (age 291.508s)
    hex dump (first 32 bytes):
    02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    00 00 00 00 04 76 ae de d1 76 43 c0 d6 08 00 00 .....v...vC.....
    backtrace:
    [<c0481704>] create_object+0x121/0x1ef
    [<c05f546b>] kmemleak_alloc+0x25/0x42
    [<c047e326>] kmemleak_alloc_recursive+0x1c/0x22
    [<c047e36e>] kmem_cache_alloc+0x42/0x68
    [<c0437701>] alloc_pid+0x19/0x288
    [<c0428acc>] copy_process+0x95a/0xdac
    [<c04290d8>] do_fork+0x129/0x261
    [<c0407de5>] sys_clone+0x1f/0x24
    [<c040292d>] ptregs_clone+0x15/0x28
    [<ffffffff>] 0xffffffff
    unreferenced object 0xdfa96a40 (size 64):
    comm "login", pid 2259, jiffies 4294719437 (age 250.179s)
    hex dump (first 32 bytes):
    02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    00 00 00 00 60 39 ae de d1 76 43 c0 bb 09 00 00 ....`9...vC.....
    backtrace:
    [<c0481704>] create_object+0x121/0x1ef
    [<c05f546b>] kmemleak_alloc+0x25/0x42
    [<c047e326>] kmemleak_alloc_recursive+0x1c/0x22
    [<c047e36e>] kmem_cache_alloc+0x42/0x68
    [<c0437701>] alloc_pid+0x19/0x288
    [<c0428acc>] copy_process+0x95a/0xdac
    [<c04290d8>] do_fork+0x129/0x261
    [<c0407de5>] sys_clone+0x1f/0x24
    [<c040292d>] ptregs_clone+0x15/0x28
    [<ffffffff>] 0xffffffff

    This report is generated whenever /sbin/mingetty (invoked by SysVinit's
    /sbin/init in accordance with /etc/inittab) is terminated.

    Steps to reproduce.

    (1) Go to console.
    (2) Try to login. /sbin/mingetty will invoke /bin/login . Terminate /bin/login
    process by either "successful login and logout" or "login failure".
    /sbin/mingetty process will be respawned by /sbin/init after /bin/login
    terminates.
    (3) Login as root.
    (4) Run "echo scan > /sys/kernel/debug/kmemleak".
    (5) Wait for a while.
    (6) Run "cat /sys/kernel/debug/kmemleak".

    I can find this report with 2.6.31.11 (by manually increasing
    CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE to 10000).

    unreferenced object 0xdeee2200 (size 64):
    comm "init", pid 1, jiffies 4294789063
    backtrace:
    [<c0487114>] create_object+0x135/0x202
    [<c0487206>] kmemleak_alloc+0x25/0x49
    [<c048433b>] kmemleak_alloc_recursive+0x1c/0x22
    [<c0484386>] kmem_cache_alloc+0x45/0xb2
    [<c043826d>] alloc_pid+0x19/0x28c
    [<c04286e4>] copy_process+0x929/0xe62
    [<c04291cb>] do_fork+0x124/0x295
    [<c040177b>] sys_clone+0x24/0x2b
    [<c0402a44>] sysenter_do_call+0x12/0x22
    [<ffffffff>] 0xffffffff

    I can't use "git bisect" to find the origin because kmemleak is available for
    2.6.31 and later.

    /sbin/init calls syscalls such as setsid() which will manipulate "struct pid"
    between fork() and execve(). But I haven't succeeded to create test program.

    Regards.


    \
     
     \ /
      Last update: 2010-03-27 13:25    [W:0.022 / U:149.080 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site