From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
To: linux-mm@kvack.org
Subject: linux-next: Bug in rmap_walk?
Date: Mon, 2 Nov 2015 21:31:59 +0900 [thread overview]
Message-ID: <201511022131.IED52614.MJVOtOSFQFLOHF@I-love.SAKURA.ne.jp> (raw)
As of linux-next-20151102, I can hit below bug using OOM stress test.
I don't hit this bug as of linux-4.3, thus I think this is a new bug.
----------
struct anon_vma *page_lock_anon_vma_read(struct page *page)
{
struct anon_vma *anon_vma = NULL;
struct anon_vma *root_anon_vma;
unsigned long anon_mapping;
rcu_read_lock();
anon_mapping = (unsigned long)READ_ONCE(page->mapping);
if ((anon_mapping & PAGE_MAPPING_FLAGS) != PAGE_MAPPING_ANON)
goto out;
if (!page_mapped(page))
goto out;
anon_vma = (struct anon_vma *) (anon_mapping - PAGE_MAPPING_ANON);
root_anon_vma = READ_ONCE(anon_vma->root);
if (down_read_trylock(&root_anon_vma->rwsem)) { /* BUG: root_anon_vma == NULL here. */
----------
----------
ffffffff810b8d30
__down_read_trylock at ./arch/x86/include/asm/rwsem.h:83
(inlined by) down_read_trylock at kernel/locking/rwsem.c:34
ffffffff81176896
page_lock_anon_vma_read at mm/rmap.c:516
ffffffff81176780
page_lock_anon_vma_read at mm/rmap.c:502
ffffffff81176d34
rmap_walk_anon at mm/rmap.c:1651
(inlined by) rmap_walk at mm/rmap.c:1732
ffffffff811773f3
try_to_unmap at mm/rmap.c:1561
ffffffff8119ce34
constant_test_bit at ./arch/x86/include/asm/bitops.h:311
(inlined by) PageCompound at include/linux/page-flags.h:154
(inlined by) page_mapped at include/linux/mm.h:951
(inlined by) __unmap_and_move at mm/migrate.c:895
(inlined by) unmap_and_move at mm/migrate.c:954
(inlined by) migrate_pages at mm/migrate.c:1153
ffffffff811619ad
compact_zone at mm/compaction.c:1420
ffffffff81161b76
compact_zone_order at mm/compaction.c:1509
ffffffff811627fc
try_to_compact_pages at mm/compaction.c:1566
ffffffff811b6404
__alloc_pages_direct_compact at mm/page_alloc.c:2793
ffffffff8114520c
__alloc_pages_slowpath at mm/page_alloc.c:3106
(inlined by) __alloc_pages_nodemask at mm/page_alloc.c:3261
ffffffff8118db15
alloc_pages_vma at mm/mempolicy.c:2035
ffffffff811a2681
do_huge_pmd_anonymous_page at mm/huge_memory.c:953
ffffffff8116c49b
create_huge_pmd at mm/memory.c:3240
(inlined by) __handle_mm_fault at mm/memory.c:3359
(inlined by) handle_mm_fault at mm/memory.c:3435
----------
----------
[ 511.059057] Out of memory: Kill process 15456 (exe) score 55 or sacrifice child
[ 511.061173] Killed process 15456 (exe) total-vm:1118284kB, anon-rss:98948kB, file-rss:4kB
[ 511.477148] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
[ 511.479817] IP: [<ffffffff810b8d30>] down_read_trylock+0x0/0x60
[ 511.481729] PGD 35eb8067 PUD 793b4067 PMD 0
[ 511.483549] Oops: 0000 [#1] SMP
[ 511.484981] Modules linked in: ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 ipt_REJECT nf_reject_ipv4 nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_mangle iptable_security iptable_raw iptable_filter ip_tables coretemp crct10dif_pclmul crc32_pclmul crc32c_intel aesni_intel glue_helper lrw gf128mul ablk_helper cryptd ppdev vmw_balloon serio_raw parport_pc pcspkr vmw_vmci parport shpchp i2c_piix4 sd_mod ata_generic pata_acpi vmwgfx drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm ahci ata_piix mptspi libahci scsi_transport_spi libata mptscsih e1000 mptbase i2c_core
[ 511.503846] CPU: 2 PID: 15407 Comm: exe Not tainted 4.3.0-rc7-next-20151102 #196
[ 511.506268] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
[ 511.509211] task: ffff880035e15700 ti: ffff88007c274000 task.ti: ffff88007c274000
[ 511.511560] RIP: 0010:[<ffffffff810b8d30>] [<ffffffff810b8d30>] down_read_trylock+0x0/0x60
[ 511.514116] RSP: 0000:ffff88007c277690 EFLAGS: 00010202
[ 511.516084] RAX: 0000000000000000 RBX: ffffea0000103fc0 RCX: 0000000000000001
[ 511.518379] RDX: 0000000000000001 RSI: 00000000002dc000 RDI: 0000000000000008
[ 511.520688] RBP: ffff88007c2776c0 R08: 0000000000000000 R09: 0000000000000000
[ 511.523210] R10: ffff880035e15700 R11: ffff880035e15e50 R12: ffff8800148b8739
[ 511.525506] R13: ffff8800148b8738 R14: 0000000000000008 R15: 0000000000000000
[ 511.527872] FS: 00007f6c6a7a5740(0000) GS:ffff88007fc80000(0000) knlGS:0000000000000000
[ 511.530340] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 511.533038] CR2: 0000000000000008 CR3: 000000001c14c000 CR4: 00000000001406e0
[ 511.535424] Stack:
[ 511.536865] ffffffff81176896 ffffffff81176780 ffffea0000103fc0 ffffea0001817500
[ 511.539295] ffff88007c277728 ffffea0000103fc0 ffff88007c277718 ffffffff81176d34
[ 511.541768] 0000000000000246 ffffea0000103f80 ffffea0000103fc0 0000000100000000
[ 511.544161] Call Trace:
[ 511.545528] [<ffffffff81176896>] ? page_lock_anon_vma_read+0x116/0x420
[ 511.547623] [<ffffffff81176780>] ? page_get_anon_vma+0x2e0/0x2e0
[ 511.549663] [<ffffffff81176d34>] rmap_walk+0x194/0x470
[ 511.551488] [<ffffffff811773f3>] try_to_unmap+0x83/0x130
[ 511.553300] [<ffffffff811757d0>] ? page_remove_rmap+0x1e0/0x1e0
[ 511.555228] [<ffffffff811748a0>] ? invalid_migration_vma+0x30/0x30
[ 511.557193] [<ffffffff81176780>] ? page_get_anon_vma+0x2e0/0x2e0
[ 511.559054] [<ffffffff81174870>] ? invalid_mkclean_vma+0x20/0x20
[ 511.560912] [<ffffffff8119ce34>] migrate_pages+0x5d4/0x9d0
[ 511.562677] [<ffffffff81160a50>] ? pageblock_pfn_to_page+0xe0/0xe0
[ 511.564599] [<ffffffff81162150>] ? isolate_freepages_block+0x3d0/0x3d0
[ 511.566529] [<ffffffff811619ad>] compact_zone+0x48d/0x5e0
[ 511.568251] [<ffffffff81161b76>] compact_zone_order+0x76/0xa0
[ 511.570046] [<ffffffff811627fc>] try_to_compact_pages+0x12c/0x240
[ 511.571875] [<ffffffff811b6404>] __alloc_pages_direct_compact+0x36/0xf4
[ 511.573844] [<ffffffff8114520c>] __alloc_pages_nodemask+0x56c/0xb30
[ 511.575721] [<ffffffff8118db15>] alloc_pages_vma+0x255/0x290
[ 511.577516] [<ffffffff811a2681>] do_huge_pmd_anonymous_page+0x151/0x680
[ 511.579489] [<ffffffff8116c49b>] handle_mm_fault+0xbab/0x15e0
[ 511.581291] [<ffffffff8116b944>] ? handle_mm_fault+0x54/0x15e0
[ 511.583140] [<ffffffff810b9ed9>] ? __lock_is_held+0x49/0x70
[ 511.584885] [<ffffffff81059641>] __do_page_fault+0x1a1/0x440
[ 511.586637] [<ffffffff81059910>] do_page_fault+0x30/0x80
[ 511.588390] [<ffffffff816cc747>] ? native_iret+0x7/0x7
[ 511.590050] [<ffffffff816cd818>] page_fault+0x28/0x30
[ 511.591663] [<ffffffff81379a8d>] ? __clear_user+0x3d/0x70
[ 511.593373] [<ffffffff8137e488>] iov_iter_zero+0x68/0x250
[ 511.594999] [<ffffffff814587e8>] read_iter_zero+0x38/0xb0
[ 511.596595] [<ffffffff811ba494>] __vfs_read+0xc4/0xf0
[ 511.598174] [<ffffffff811bac4a>] vfs_read+0x7a/0x120
[ 511.599655] [<ffffffff811bb973>] SyS_read+0x53/0xd0
[ 511.601118] [<ffffffff816cbbb2>] entry_SYSCALL_64_fastpath+0x12/0x76
[ 511.602876] Code: e8 76 66 00 00 48 c7 43 58 00 00 00 00 ba ff ff ff ff 48 89 d8 f0 48 0f c1 10 79 05 e8 2a 0c 2c 00 5b 5d c3 0f 1f 80 00 00 00 00 <48> 8b 07 48 89 c2 48 83 c2 01 7e 07 f0 48 0f b1 17 75 f0 48 f7
[ 511.609514] RIP [<ffffffff810b8d30>] down_read_trylock+0x0/0x60
[ 511.611198] RSP <ffff88007c277690>
[ 511.612398] CR2: 0000000000000008
[ 511.613556] ---[ end trace 0968d378b7781b82 ]---
[ 511.613559] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
[ 511.613563] IP: [<ffffffff810b8d30>] down_read_trylock+0x0/0x60
[ 511.613564] PGD ae52067 PUD af02067 PMD 0
[ 511.613566] Oops: 0000 [#2] SMP
[ 511.613594] Modules linked in: ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 ipt_REJECT nf_reject_ipv4 nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_mangle iptable_security iptable_raw iptable_filter ip_tables coretemp crct10dif_pclmul crc32_pclmul crc32c_intel aesni_intel glue_helper lrw gf128mul ablk_helper cryptd ppdev vmw_balloon serio_raw parport_pc pcspkr vmw_vmci parport shpchp i2c_piix4 sd_mod ata_generic pata_acpi vmwgfx drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm ahci ata_piix mptspi libahci scsi_transport_spi libata mptscsih e1000 mptbase i2c_core
[ 511.613596] CPU: 0 PID: 15387 Comm: exe Tainted: G D 4.3.0-rc7-next-20151102 #196
[ 511.613597] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
[ 511.613597] task: ffff880077ea8000 ti: ffff88007bd48000 task.ti: ffff88007bd48000
[ 511.613599] RIP: 0010:[<ffffffff810b8d30>] [<ffffffff810b8d30>] down_read_trylock+0x0/0x60
[ 511.613600] RSP: 0000:ffff88007bd4b690 EFLAGS: 00010202
[ 511.613601] RAX: 0000000000000000 RBX: ffffea0000107fc0 RCX: 0000000000000001
[ 511.613601] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000008
[ 511.613602] RBP: ffff88007bd4b6c0 R08: 0000000000000000 R09: 0000000000000000
[ 511.613602] R10: ffff880077ea8000 R11: ffffffffffffffe2 R12: ffff8800148b8739
[ 511.613602] R13: ffff8800148b8738 R14: 0000000000000008 R15: 0000000000000000
[ 511.613603] FS: 00007f384992f740(0000) GS:ffff88007fc00000(0000) knlGS:0000000000000000
[ 511.613604] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 511.613604] CR2: 0000000000000008 CR3: 000000007b8c0000 CR4: 00000000001406f0
[ 511.613633] Stack:
[ 511.613635] ffffffff81176896 ffffffff81176780 ffffea0000107fc0 ffffea0001808840
[ 511.613636] ffff88007bd4b728 ffffea0000107fc0 ffff88007bd4b718 ffffffff81176d34
[ 511.613637] 0000000000000246 ffffea0000107f80 ffffea0000107fc0 0000000000000000
[ 511.613637] Call Trace:
[ 511.613640] [<ffffffff81176896>] ? page_lock_anon_vma_read+0x116/0x420
[ 511.613641] [<ffffffff81176780>] ? page_get_anon_vma+0x2e0/0x2e0
[ 511.613643] [<ffffffff81176d34>] rmap_walk+0x194/0x470
[ 511.613644] [<ffffffff811773f3>] try_to_unmap+0x83/0x130
[ 511.613645] [<ffffffff811757d0>] ? page_remove_rmap+0x1e0/0x1e0
[ 511.613646] [<ffffffff811748a0>] ? invalid_migration_vma+0x30/0x30
[ 511.613647] [<ffffffff81176780>] ? page_get_anon_vma+0x2e0/0x2e0
[ 511.613648] [<ffffffff81174870>] ? invalid_mkclean_vma+0x20/0x20
[ 511.613650] [<ffffffff8119ce34>] migrate_pages+0x5d4/0x9d0
[ 511.613652] [<ffffffff81160a50>] ? pageblock_pfn_to_page+0xe0/0xe0
[ 511.613653] [<ffffffff81162150>] ? isolate_freepages_block+0x3d0/0x3d0
[ 511.613654] [<ffffffff811619ad>] compact_zone+0x48d/0x5e0
[ 511.613655] [<ffffffff81161b76>] compact_zone_order+0x76/0xa0
[ 511.613657] [<ffffffff811627fc>] try_to_compact_pages+0x12c/0x240
[ 511.613658] [<ffffffff8115ae27>] ? zone_statistics+0x77/0x90
[ 511.613659] [<ffffffff811b6404>] __alloc_pages_direct_compact+0x36/0xf4
[ 511.613662] [<ffffffff8114520c>] __alloc_pages_nodemask+0x56c/0xb30
[ 511.613663] [<ffffffff810bc600>] ? mark_held_locks+0x10/0x90
[ 511.613666] [<ffffffff816cc6df>] ? retint_kernel+0x10/0x10
[ 511.613668] [<ffffffff8118db15>] alloc_pages_vma+0x255/0x290
[ 511.613670] [<ffffffff811a2681>] do_huge_pmd_anonymous_page+0x151/0x680
[ 511.613672] [<ffffffff8116c49b>] handle_mm_fault+0xbab/0x15e0
[ 511.613674] [<ffffffff8116b944>] ? handle_mm_fault+0x54/0x15e0
[ 511.613675] [<ffffffff810b859f>] ? cpuacct_charge+0xaf/0x1a0
[ 511.613677] [<ffffffff81059641>] __do_page_fault+0x1a1/0x440
[ 511.613678] [<ffffffff810b9ed9>] ? __lock_is_held+0x49/0x70
[ 511.613679] [<ffffffff81059910>] do_page_fault+0x30/0x80
[ 511.613680] [<ffffffff816cc747>] ? native_iret+0x7/0x7
[ 511.613682] [<ffffffff816cd818>] page_fault+0x28/0x30
[ 511.613684] [<ffffffff81379a8d>] ? __clear_user+0x3d/0x70
[ 511.613685] [<ffffffff8137e488>] iov_iter_zero+0x68/0x250
[ 511.613688] [<ffffffff814587e8>] read_iter_zero+0x38/0xb0
[ 511.613690] [<ffffffff811ba494>] __vfs_read+0xc4/0xf0
[ 511.613691] [<ffffffff811bac4a>] vfs_read+0x7a/0x120
[ 511.613692] [<ffffffff811bb973>] SyS_read+0x53/0xd0
[ 511.613693] [<ffffffff816cbbb2>] entry_SYSCALL_64_fastpath+0x12/0x76
[ 511.613705] Code: e8 76 66 00 00 48 c7 43 58 00 00 00 00 ba ff ff ff ff 48 89 d8 f0 48 0f c1 10 79 05 e8 2a 0c 2c 00 5b 5d c3 0f 1f 80 00 00 00 00 <48> 8b 07 48 89 c2 48 83 c2 01 7e 07 f0 48 0f b1 17 75 f0 48 f7
[ 511.613706] RIP [<ffffffff810b8d30>] down_read_trylock+0x0/0x60
[ 511.613707] RSP <ffff88007bd4b690>
[ 511.613707] CR2: 0000000000000008
[ 511.613709] ---[ end trace 0968d378b7781b83 ]---
[ 511.613711] BUG: sleeping function called from invalid context at include/linux/sched.h:2774
[ 511.613711] in_atomic(): 1, irqs_disabled(): 1, pid: 15387, name: exe
[ 511.613712] INFO: lockdep is turned off.
[ 511.613712] irq event stamp: 1198952
[ 511.613717] hardirqs last enabled at (1198951): [<ffffffff816cc6df>] restore_regs_and_iret+0x0/0x1d
[ 511.613718] hardirqs last disabled at (1198952): [<ffffffff816cb1d8>] _raw_spin_lock_irq+0x18/0x50
[ 511.613721] softirqs last enabled at (1198948): [<ffffffff8107334d>] __do_softirq+0x1bd/0x290
[ 511.613722] softirqs last disabled at (1198943): [<ffffffff8107374b>] irq_exit+0xeb/0x100
[ 511.613724] CPU: 0 PID: 15387 Comm: exe Tainted: G D 4.3.0-rc7-next-20151102 #196
[ 511.613724] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
[ 511.613726] 0000000000000000 00000000e557b5dd ffff88007bd4b380 ffffffff8136b873
[ 511.613727] ffff880077ea8000 ffff88007bd4b3a8 ffffffff81094adb ffffffff819f2f2f
[ 511.613728] 0000000000000ad6 0000000000000000 ffff88007bd4b3d0 ffffffff81094c14
[ 511.613728] Call Trace:
[ 511.613730] [<ffffffff8136b873>] dump_stack+0x4b/0x68
[ 511.613732] [<ffffffff81094adb>] ___might_sleep+0x14b/0x240
[ 511.613733] [<ffffffff81094c14>] __might_sleep+0x44/0x80
[ 511.613735] [<ffffffff8107e52e>] exit_signals+0x2e/0x150
[ 511.613736] [<ffffffff810908f1>] ? blocking_notifier_call_chain+0x11/0x20
[ 511.613737] [<ffffffff81071c0f>] do_exit+0xbf/0xb20
[ 511.613740] [<ffffffff8101297c>] oops_end+0x9c/0xd0
[ 511.613741] [<ffffffff81058ff9>] no_context+0x159/0x3c0
[ 511.613743] [<ffffffff81060200>] ? leave_mm+0x70/0x70
[ 511.613744] [<ffffffff81059367>] __bad_area_nosemaphore+0x107/0x230
[ 511.613745] [<ffffffff81060200>] ? leave_mm+0x70/0x70
[ 511.613746] [<ffffffff8105949e>] bad_area_nosemaphore+0xe/0x10
[ 511.613746] [<ffffffff81059785>] __do_page_fault+0x2e5/0x440
[ 511.613749] [<ffffffff810f5059>] ? smp_call_function_many+0x219/0x240
[ 511.613750] [<ffffffff81059910>] do_page_fault+0x30/0x80
[ 511.613751] [<ffffffff816cc747>] ? native_iret+0x7/0x7
[ 511.613752] [<ffffffff816cd818>] page_fault+0x28/0x30
[ 511.613754] [<ffffffff810b8d30>] ? up_write+0x40/0x40
[ 511.613755] [<ffffffff81176896>] ? page_lock_anon_vma_read+0x116/0x420
[ 511.613756] [<ffffffff81176780>] ? page_get_anon_vma+0x2e0/0x2e0
[ 511.613757] [<ffffffff81176d34>] rmap_walk+0x194/0x470
[ 511.613758] [<ffffffff811773f3>] try_to_unmap+0x83/0x130
[ 511.613759] [<ffffffff811757d0>] ? page_remove_rmap+0x1e0/0x1e0
[ 511.613760] [<ffffffff811748a0>] ? invalid_migration_vma+0x30/0x30
[ 511.613761] [<ffffffff81176780>] ? page_get_anon_vma+0x2e0/0x2e0
[ 511.613762] [<ffffffff81174870>] ? invalid_mkclean_vma+0x20/0x20
[ 511.613764] [<ffffffff8119ce34>] migrate_pages+0x5d4/0x9d0
[ 511.613765] [<ffffffff81160a50>] ? pageblock_pfn_to_page+0xe0/0xe0
[ 511.613766] [<ffffffff81162150>] ? isolate_freepages_block+0x3d0/0x3d0
[ 511.613767] [<ffffffff811619ad>] compact_zone+0x48d/0x5e0
[ 511.613768] [<ffffffff81161b76>] compact_zone_order+0x76/0xa0
[ 511.613770] [<ffffffff811627fc>] try_to_compact_pages+0x12c/0x240
[ 511.613771] [<ffffffff8115ae27>] ? zone_statistics+0x77/0x90
[ 511.613772] [<ffffffff811b6404>] __alloc_pages_direct_compact+0x36/0xf4
[ 511.613773] [<ffffffff8114520c>] __alloc_pages_nodemask+0x56c/0xb30
[ 511.613774] [<ffffffff810bc600>] ? mark_held_locks+0x10/0x90
[ 511.613775] [<ffffffff816cc6df>] ? retint_kernel+0x10/0x10
[ 511.613777] [<ffffffff8118db15>] alloc_pages_vma+0x255/0x290
[ 511.613778] [<ffffffff811a2681>] do_huge_pmd_anonymous_page+0x151/0x680
[ 511.613780] [<ffffffff8116c49b>] handle_mm_fault+0xbab/0x15e0
[ 511.613781] [<ffffffff8116b944>] ? handle_mm_fault+0x54/0x15e0
[ 511.613783] [<ffffffff810b859f>] ? cpuacct_charge+0xaf/0x1a0
[ 511.613784] [<ffffffff81059641>] __do_page_fault+0x1a1/0x440
[ 511.613785] [<ffffffff810b9ed9>] ? __lock_is_held+0x49/0x70
[ 511.613786] [<ffffffff81059910>] do_page_fault+0x30/0x80
[ 511.613787] [<ffffffff816cc747>] ? native_iret+0x7/0x7
[ 511.613788] [<ffffffff816cd818>] page_fault+0x28/0x30
[ 511.613789] [<ffffffff81379a8d>] ? __clear_user+0x3d/0x70
[ 511.613790] [<ffffffff8137e488>] iov_iter_zero+0x68/0x250
[ 511.613792] [<ffffffff814587e8>] read_iter_zero+0x38/0xb0
[ 511.613793] [<ffffffff811ba494>] __vfs_read+0xc4/0xf0
[ 511.613795] [<ffffffff811bac4a>] vfs_read+0x7a/0x120
[ 511.613796] [<ffffffff811bb973>] SyS_read+0x53/0xd0
[ 511.613797] [<ffffffff816cbbb2>] entry_SYSCALL_64_fastpath+0x12/0x76
[ 511.613799] note: exe[15387] exited with preempt_count 1
[ 511.857138] note: exe[15407] exited with preempt_count 1
----------
---------- OOM stress tester ----------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <fcntl.h>
static void child(void)
{
char *buf = NULL;
unsigned long size = 0;
const int fd = open("/dev/zero", O_RDONLY);
for (size = 1048576; size < 512UL * (1 << 30); size <<= 1) {
char *cp = realloc(buf, size);
if (!cp) {
size >>= 1;
break;
}
buf = cp;
}
read(fd, buf, size); /* Will cause OOM due to overcommit */
}
int main(int argc, char *argv[])
{
if (argc > 1) {
child();
return 0;
}
signal(SIGCLD, SIG_IGN);
while (1) {
switch (fork()) {
case 0:
execl("/proc/self/exe", "/proc/self/exe", "1", NULL);
_exit(0);
case -1:
sleep(1);
}
}
return 0;
}
---------- OOM stress tester ----------
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2015-11-02 12:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-02 12:31 Tetsuo Handa [this message]
2015-11-02 12:42 ` Kirill A. Shutemov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201511022131.IED52614.MJVOtOSFQFLOHF@I-love.SAKURA.ne.jp \
--to=penguin-kernel@i-love.sakura.ne.jp \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox