chrome crashing with nouveau
I just started to check some another application (not related to nouveau) , and the first thing I am seeing after running Valgrind on it is this:
==17290== Memcheck, a memory error detector
==17290== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==17290== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright info
==17290== Command: ./bin/simulide
==17290==
==17290== Syscall param ioctl(generic) points to uninitialised byte(s)
==17290== at 0x8223317: ioctl (syscall-template.S:78)
==17290== by 0x21ABB727: drmIoctl (in /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0)
==17290== by 0x21ABE49B: drmCommandWriteRead (in /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0)
==17290== by 0x28EA2BF8: ??? (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x28EA34B2: nouveau_device_new (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x22FB3C20: nouveau_drm_screen_create (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D3645: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22DC5E50: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D5CEA: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22CEDAA0: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x216529B6: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163EEF5: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== Address 0x207eef32 is 2 bytes inside a block of size 72 alloc'd
==17290== at 0x4C32FB5: malloc (vg_replace_malloc.c:380)
==17290== by 0x28EA2B9B: ??? (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x28EA34B2: nouveau_device_new (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x22FB3C20: nouveau_drm_screen_create (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D3645: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22DC5E50: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D5CEA: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22CEDAA0: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x216529B6: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163EEF5: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163A7C1: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163BF21: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290==
==17290== Syscall param ioctl(generic) points to uninitialised byte(s)
==17290== at 0x8223317: ioctl (syscall-template.S:78)
==17290== by 0x21ABB727: drmIoctl (in /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0)
==17290== by 0x21ABE49B: drmCommandWriteRead (in /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0)
==17290== by 0x28EA2DF7: nouveau_object_mthd (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x28EA34CD: nouveau_device_new (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x22FB3C20: nouveau_drm_screen_create (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D3645: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22DC5E50: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D5CEA: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22CEDAA0: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x216529B6: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163EEF5: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== Address 0x207dd602 is 2 bytes inside a block of size 136 alloc'd
==17290== at 0x4C32FB5: malloc (vg_replace_malloc.c:380)
==17290== by 0x28EA2DBF: nouveau_object_mthd (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x28EA34CD: nouveau_device_new (in /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0)
==17290== by 0x22FB3C20: nouveau_drm_screen_create (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D3645: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22DC5E50: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x227D5CEA: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x22CEDAA0: ??? (in /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so)
==17290== by 0x216529B6: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163EEF5: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163A7C1: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290== by 0x2163BF21: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==17290==
Now I understand why Chrome is constantly crashing when I open many tabs, there must be some overflow into graphics card memory.
I have been using valgrind and I can tell you that this is a clear bug:
Address 0x207dd602 is 2 bytes inside a block of size 136 alloc'd
as you can see, these are not sources of my program, it is Nouveau sources. I hope this can be fixed asap, as I have been seeing Chrome crashing for years without any improvement. Probably it is due to this bug.