Re: [i-g-t] dumb_buffer@clear_create triggers OOM since 0b0eaa353

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 4/23/20 5:38 PM, Li Zhijian wrote:
Hi guys

0Day noticed that dumb_buffer@clear_create triggers OOM  since commit: 0b0eaa353 ("tests/dumb_buffer: Try to compute the largest possible dumb buffer")

our platform is
- CPU: Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
- memory: 48G
- kernel: v5.5, v5.6, v5.7-rc2
i tried 2 other platforms
- i7-3770K + 16G
- AMD Opteron(TM) Processor 6276 + 128G
dumb_buffer@clear_create works well on both of them.

i have no enough knowledge in IGT and Kernel Graphic Driver, so if you want to more debug info, please let me know.


Thanks





i tried to add some debug into the code as following
diff --git a/tests/dumb_buffer.c b/tests/dumb_buffer.c
index c1e7b4d3..22611f95 100644
--- a/tests/dumb_buffer.c
+++ b/tests/dumb_buffer.c
@@ -58,11 +58,13 @@ static int __dumb_create(int fd, struct drm_mode_create_dumb *create)
 {
        int err = 0;

+       igt_info("start __dumb_create %ld\n", create->size);
        if (igt_ioctl(fd, DRM_IOCTL_MODE_CREATE_DUMB, create)) {
                err = -errno;
                igt_assume(err);
        }

+       igt_info("end __dumb_create %ld, err %d\n", create->size, err);
        errno = 0;
        return err;
 }
@@ -80,10 +82,12 @@ static void *__dumb_map(int fd, uint32_t handle, uint64_t size, unsigned prot)
        if (igt_ioctl(fd, DRM_IOCTL_MODE_MAP_DUMB, &arg))
                return NULL;

+       igt_info("size %ld, offset %x\n", size, arg.offset);
        ptr = mmap(NULL, size, prot, MAP_SHARED, fd, arg.offset);
        if (ptr == MAP_FAILED)
                return NULL;

+       igt_info("mmap success, size %ld, offset %x\n", size, arg.offset);
        return ptr;
 }

@@ -356,6 +360,7 @@ static uint64_t estimate_largest_dumb_buffer(int fd)
                return largest / PAGE_SIZE;
        }

+       sleep(1);
        for (create.height = 1; create.height; create.height *= 2) {
                if (__dumb_create(fd, &create))
                        longjmp(sigjmp, SIGABRT);
@@ -368,7 +373,9 @@ static uint64_t estimate_largest_dumb_buffer(int fd)
                if (!*ptr)
                        largest = create.size;

+               igt_info("mmap %ld\n", create.size);
                munmap(ptr, create.size);
+               igt_info("unmmap %ld\n", create.size);
                ptr = NULL;
        }


then get below outputs:

Subtest map-invalid-size: SUCCESS (0.000s)
Starting subtest: create-clear
start __dumb_create 0
end __dumb_create 4194304, err 0
size 4194304, offset 1a48000
mmap success, size 4194304, offset 1a48000
mmap 4194304
unmmap 4194304
start __dumb_create 4194304
end __dumb_create 8388608, err 0
size 8388608, offset 1a48000
mmap success, size 8388608, offset 1a48000
mmap 8388608
unmmap 8388608
start __dumb_create 8388608
end __dumb_create 16777216, err 0
size 16777216, offset 1a48000
mmap success, size 16777216, offset 1a48000
mmap 16777216
unmmap 16777216
start __dumb_create 16777216
end __dumb_create 33554432, err 0
size 33554432, offset 1a48000
mmap success, size 33554432, offset 1a48000
mmap 33554432
unmmap 33554432
start __dumb_create 33554432
end __dumb_create 67108864, err 0
size 67108864, offset 1a48000
mmap success, size 67108864, offset 1a48000
mmap 67108864
unmmap 67108864
start __dumb_create 67108864
end __dumb_create 134217728, err 0
size 134217728, offset 1a48000
mmap success, size 134217728, offset 1a48000
mmap 134217728
unmmap 134217728
start __dumb_create 134217728
end __dumb_create 268435456, err 0
size 268435456, offset 1a48000
mmap success, size 268435456, offset 1a48000
mmap 268435456
unmmap 268435456
start __dumb_create 268435456
end __dumb_create 536870912, err 0
size 536870912, offset 1a48000
mmap success, size 536870912, offset 1a48000
mmap 536870912
unmmap 536870912
start __dumb_create 536870912
end __dumb_create 1073741824, err 0
size 1073741824, offset 1a48000
mmap success, size 1073741824, offset 1a48000
mmap 1073741824
unmmap 1073741824
start __dumb_create 1073741824
end __dumb_create 2147483648, err 0
size 2147483648, offset 1a48000
mmap success, size 2147483648, offset 1a48000
Killed


attached the dmesg as well[10703.523385] dumb_buffer invoked oom-killer: gfp_mask=0x0(), order=0, oom_score_adj=1000 [10703.531385] CPU: 0 PID: 7166 Comm: dumb_buffer Not tainted 5.6.0-00335-g7111951b8d497 #1 [10703.539466] Hardware name: Supermicro SYS-5018D-FN4T/X10SDV-8C-TLN4F, BIOS 1.1 03/02/2016
[10703.547630] Call Trace:
[10703.550080]  dump_stack+0x66/0x8b
[10703.553398]  dump_header+0x4a/0x220
[10703.556889]  oom_kill_process+0xf6/0x150
[10703.560805]  out_of_memory+0x105/0x540
[10703.564548]  pagefault_out_of_memory+0x64/0x80
[10703.568987]  page_fault+0x3e/0x50
[10703.572296] RIP: 0033:0x556f7b09257a
[10703.575867] Code: e8 2b fe ff ff 8b 74 24 40 44 89 f7 48 89 44 24 28 e8 ea fb ff ff 48 8b 44 24 28 48 85 c0 74 7d 48 8b 44 24 28 48 8b 4c 24 48 <80> 38 00 75 05 48 89 4c 24 20 48 8d 15 71 0b 00 00 31 ff 31 c0 be
[10703.594613] RSP: 002b:00007fff025dc330 EFLAGS: 00010206
[10703.599829] RAX: 00007fd2e42cf000 RBX: 00007fff025dc360 RCX: 0000000080000000 [10703.606955] RDX: 00007fff025dc31c RSI: 00000000c00464b4 RDI: 0000000000000003 [10703.614078] RBP: 00007fff025dc4e0 R08: 0000556f7b3b8014 R09: 0000000000000001 [10703.621201] R10: 0000556f7b3e2530 R11: 0000000000000246 R12: 0000556f7b091f60 [10703.628324] R13: 00007fff025dc5f0 R14: 0000000000000003 R15: 0000000000000000
[10703.635457] Mem-Info:
[10703.637734] active_anon:64644 inactive_anon:13676 isolated_anon:0
                active_file:189 inactive_file:80 isolated_file:0
                unevictable:567302 dirty:0 writeback:0 unstable:0
                slab_reclaimable:17803 slab_unreclaimable:19262
                mapped:6355 shmem:14081 pagetables:614 bounce:0
                free:11608206 free_pcp:7728 free_cma:51062
[10703.671836] Node 0 active_anon:258576kB inactive_anon:54704kB active_file:756kB inactive_file:320kB unevictable:2269208kB isolated(anon):0kB isolated(file):0kB mapped:25420kB dirty:0kB writeback:0kB shmem:56324kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 235520kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes [10703.700131] Node 0 DMA free:15888kB min:20kB low:32kB high:44kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15972kB managed:15888kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[10703.727907] lowmem_reserve[]: 0 1865 47608 47608 47608
[10703.733056] Node 0 DMA32 free:1898672kB min:2636kB low:4544kB high:6452kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:1975952kB managed:1910416kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:11596kB local_pcp:1384kB free_cma:0kB
[10703.762653] lowmem_reserve[]: 0 0 45742 45742 45742
[10703.767534] Node 0 Normal free:44518264kB min:64924kB low:111968kB high:159012kB reserved_highatomic:0KB active_anon:258576kB inactive_anon:54704kB active_file:756kB inactive_file:320kB unevictable:2269208kB writepending:0kB present:48234496kB managed:47316716kB mlocked:2208kB kernel_stack:3584kB pagetables:2456kB bounce:0kB free_pcp:19312kB local_pcp:1388kB free_cma:204248kB
[10703.800750] lowmem_reserve[]: 0 0 0 0 0
[10703.804598] Node 0 DMA: 0*4kB 0*8kB 1*16kB (U) 0*32kB 2*64kB (U) 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (UM) = 15888kB [10703.817726] Node 0 DMA32: 28*4kB (UM) 9*8kB (UM) 19*16kB (UM) 12*32kB (UM) 11*64kB (UM) 10*128kB (UM) 22*256kB (UM) 22*512kB (UM) 11*1024kB (U) 2*2048kB (U) 455*4096kB (U) = 1898792kB [10703.834063] Node 0 Normal: 697*4kB (UMEC) 893*8kB (UME) 239*16kB (UME) 208*32kB (UMEC) 59*64kB (UME) 58*128kB (UME) 139*256kB (UMEC) 86*512kB (UME) 40*1024kB (UMC) 7*2048kB (UC) 10828*4096kB (UMC) = 44518012kB [10703.852656] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB [10703.861361] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
[10703.869807] 581564 total pagecache pages
[10703.873740] 0 pages in swap cache
[10703.877069] Swap cache stats: add 0, delete 0, find 0/0
[10703.882302] Free swap  = 0kB
[10703.885198] Total swap = 0kB
[10703.888093] 12556605 pages RAM
[10703.891161] 0 pages HighMem/MovableOnly
[10703.895008] 245850 pages reserved
[10703.898337] 51200 pages cma reserved
[10703.901923] 0 pages hwpoisoned
[10703.904994] Tasks state (memory values in pages):
[10703.909720] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name [10703.918358] [    354]   100   354    31823     1063 151552        0             0 systemd-timesyn [10703.927405] [    358]     0   358    12470      885 143360        0             0 rpcbind [10703.935750] [    384]   105   384    11285      969 126976        0          -900 dbus-daemon [10703.944453] [    399]     0   399    63585      782 147456        0             0 rsyslogd [10703.952886] [    406]     0   406     1074       32 53248        0             0 lkp-bootstrap [10703.961762] [    408]     0   408     1107      453 57344        0         -1000 lkp-setup-rootf [10703.970816] [    414]     0   414    11621     1190 131072        0             0 systemd-logind [10703.979776] [    420]     0   420    17488     1564 172032        0         -1000 sshd [10703.987873] [    438]     0   438     1491      174 57344        0         -1000 tail [10703.995967] [    440]     0   440    42374    38686 380928        0         -1000 sed [10704.003976] [    441]     0   441     1491      177 57344        0         -1000 tail [10704.012071] [    442]     0   442    26356    22656 253952        0         -1000 sed [10704.020077] [    464]     0   464     3218      431 69632        0             0 agetty [10704.028362] [    665]     0   665     1112      452 53248        0         -1000 run-lkp [10704.036710] [    690]   106   690     8860      595 114688        0             0 rpc.statd [10704.045237] [    757]     0   757     5716      459 86016        0             0 bmc-watchdog [10704.054027] [    796]     0   796     1070      380 57344        0         -1000 watchdog [10704.062480] [   1436]     0  1436     3470      623 61440        0             0 cron [10704.070562] [   4323]     0  4323     7077      825 81920        0         -1000 systemd-udevd [10704.079426] [   4997]     0  4997     3872      410 73728        0             0 lvmetad [10704.087765] [   7024]     0  7024    18206     1724 176128        0             0 sshd [10704.095857] [   7033]     0  7033     1546      918 49152        0             0 bash [10704.103953] [   7165]     0  7165     1015      197 49152        0         -1000 sleep [10704.112135] [   7166]     0  7166   564400     3494 327680        0          1000 dumb_buffer [10704.120836] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-0.slice/session-35.scope,task=dumb_buffer,pid=7166,uid=0 [10704.137173] Out of memory: Killed process 7166 (dumb_buffer) total-vm:2257600kB, anon-rss:3832kB, file-rss:10144kB, shmem-rss:0kB, UID:0 pgtables:320kB oom_score_adj:1000 [10704.153758] oom_reaper: reaped process 7166 (dumb_buffer), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB


Thanks
Zhijian



_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux