Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未初始化的值是由库代码上的堆栈分配错误创建的_C++_Valgrind_Ioctl - Fatal编程技术网

C++ 未初始化的值是由库代码上的堆栈分配错误创建的

C++ 未初始化的值是由库代码上的堆栈分配错误创建的,c++,valgrind,ioctl,C++,Valgrind,Ioctl,嗨,我目前正在修复我的valgrind错误,它们是: ==11925== ERROR SUMMARY: 9 errors from 1 contexts (suppressed: 0 from 0) ==11925== ==11925== 9 errors in context 1 of 1: ==11925== Syscall param ioctl(generic) points to uninitialised byte(s) ==11925== at 0xF8B7F47: ioc

嗨,我目前正在修复我的valgrind错误,它们是:

==11925== ERROR SUMMARY: 9 errors from 1 contexts (suppressed: 0 from 0)
==11925== 
==11925== 9 errors in context 1 of 1:
==11925== Syscall param ioctl(generic) points to uninitialised byte(s)
==11925==    at 0xF8B7F47: ioctl (syscall-template.S:84)
==11925==    by 0x1F770DAD: drmIoctl (in /opt/amdgpu/lib/x86_64-linux-gnu/libdrm.so.2.4.0)
==11925==    by 0x1F7756E8: drmCommandWriteRead (in /opt/amdgpu/lib/x86_64-linux-gnu/libdrm.so.2.4.0)
==11925==    by 0x3332C6AC: amdgpu_create_bo_from_user_mem (in /opt/amdgpu/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0)
==11925==    by 0x32A479F2: ??? (in /usr/lib/x86_64-linux-gnu/gallium-pipe/pipe_radeonsi.so)
==11925==    by 0x32A6E6B3: ??? (in /usr/lib/x86_64-linux-gnu/gallium-pipe/pipe_radeonsi.so)
==11925==    by 0x2D8E8BD6: ??? (in /usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0)
==11925==    by 0x2D8E05D4: ??? (in /usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0)
==11925==    by 0x2D8DE2D4: ??? (in /usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0)
==11925==    by 0x2D8DD2E7: ??? (in /usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0)
==11925==    by 0x2D8DD940: ??? (in /usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0)
==11925==    by 0x2D8D8875: ??? (in /usr/lib/x86_64-linux-gnu/libMesaOpenCL.so.1.0.0)
==11925==  Address 0xffeffed64 is on thread 1's stack
==11925==  in frame #3, created by amdgpu_create_bo_from_user_mem (???:)
==11925==  Uninitialised value was created by a stack allocation
==11925==    at 0x329770B0: ??? (in /usr/lib/x86_64-linux-gnu/gallium-pipe/pipe_radeonsi.so)
在我的程序中,我与错误代码中提到的文件无关。我读过很多关于这个问题的帖子,但在我的例子中,提到的代码行是,甚至在我的代码中也没有(我想它是在我使用的某个库中)


谢谢你的帮助

将未初始化的缓冲区传递给ioctl是很常见的

valgrind甚至可以选择忽略它们:

--sim-hints=lax-ioctls
见医生

宽松的ioctl:对ioctl的处理非常宽松;唯一的假设是尺寸是正确的。写入时不需要初始化整个缓冲区。如果没有这些,使用一些带有大量奇怪ioctl命令的设备驱动程序将变得非常烦人


简言之,您的错误(很可能)是误报。

可能是您使用的库包含缺陷,或者您使用错误,或者valgrind做出了误报。我们看不到您有什么,也无法从这些消息中对其进行反向工程。谢谢,我对这个问题绞尽脑汁已经太久了:(