[Intel-gfx] [i-g-t] dumb_buffer at clear_create triggers OOM since 0b0eaa353

Li Zhijian zhijianx.li at intel.com
Sun Apr 26 03:04:43 UTC 2020



On 4/23/20 5:38 PM, Li Zhijian wrote:
> Hi guys
>
> 0Day noticed that dumb_buffer at 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 at 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
>
>



More information about the Intel-gfx mailing list