KhronosGroup / KhronosGroup/glslang
segmentation fault under Haiku
- Dominant language
- C++
- Stars
- 3.6k
- Forks
- 989
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 31
Description
Getting segmentation faults from glslangValidator on Haiku while compiling the latest Mesa.
```
/Data/Code/mesa> gdb /Data/Code/glslang/build/StandAlone/glslangValidator
GNU gdb (GDB) 15.1
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-unknown-haiku".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /Data/Code/glslang/build/StandAlone/glslangValidator...
(gdb) run -V --target-env spirv1.5 -x -o src/vulkan/runtime/radix_sort/shaders/init.comp.spv.h src/vulkan/runtime/radix_sort/shaders/init.comp -DRS_KEYVAL_DWORDS=2
Starting program: /Data/Code/glslang/build/StandAlone/glslangValidator -V --target-env spirv1.5 -x -o src/vulkan/runtime/radix_sort/shaders/init.comp.spv.h src/vulkan/runtime/radix_sort/shaders/init.comp -DRS_KEYVAL_DWORDS=2
setpgrp failed in child: No such process
src/vulkan/runtime/radix_sort/shaders/init.comp
Thread 57449 caused an exception: Segment violation
Program received signal SIGSEGV, Segmentation fault.
0x0000000000789cb6 in std::basic_string, glslang::pool_allocator >::size (this=0x5252398)
at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/cow_string.h:922
922 return _M_rep()->_M_length;
(gdb) bt
#0 0x0000000000789cb6 in std::basic_string, glslang::pool_allocator >::size (this=0x5252398)
at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/cow_string.h:922
#1 0x000000000078a538 in std::operator==, glslang::pool_allocator > (__lhs=..., __rhs=...)
at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/basic_string.h:3714
#2 0x0000000000895038 in operator() (__closure=0x7f0001083a48, i=...) at /Data/Code/glslang/glslang/MachineIndependent/SymbolTable.cpp:304
#3 0x00000000008966f2 in __gnu_cxx::__ops::_Iter_pred, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >&)> >::operator()<__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > > >(__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >) (
this=0x7f0001083a48, __it=...) at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/predefined_ops.h:318
#4 0x00000000008964a2 in std::__find_if<__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__ops::_Iter_pred, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >&)> > >(__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__ops::_Iter_pred, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >&)> >, std::random_access_iterator_tag) (__first=..., __last=..., __pred=...)
at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/stl_algobase.h:2097
#5 0x00000000008962aa in std::__find_if<__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__ops::_Iter_pred, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >&)> > >(__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__ops::_Iter_pred, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >&)> >) (__first=..., __last=..., __pred=...)
at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/stl_algobase.h:2117
#6 0x0000000000896214 in std::find_if<__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string for more, q to quit, c to continue without paging--
char_traits, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, glslang::TSymbolTableLevel::~TSymbolTableLevel()::, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >&)> >(__gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, __gnu_cxx::__normal_iterator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >*, std::vector, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > >, glslang::pool_allocator, glslang::pool_allocator >, std::basic_string, glslang::pool_allocator > > > > >, struct {...}) (__first=..., __last=..., __pred=...) at /boot/system/develop/tools/lib/gcc/x86_64-unknown-haiku/13.3.0/include/c++/bits/stl_algo.h:3923
#7 0x00000000008950a3 in glslang::TSymbolTableLevel::~TSymbolTableLevel (this=0x5252298, __in_chrg=) at /Data/Code/glslang/glslang/MachineIndependent/SymbolTable.cpp:303
#8 0x000000000078949a in glslang::TSymbolTable::pop (this=0x169b5a0, p=0x0) at /Data/Code/glslang/glslang/MachineIndependent/SymbolTable.h:703
#9 0x000000000087d543 in glslang::TSymbolTable::~TSymbolTable (this=0x169b5a0, __in_chrg=) at /Data/Code/glslang/glslang/MachineIndependent/SymbolTable.h:638
#10 0x0000000000876d97 in ShFinalize () at /Data/Code/glslang/glslang/MachineIndependent/ShaderLang.cpp:1405
#11 0x0000000000877950 in glslang::FinalizeProcess () at /Data/Code/glslang/glslang/MachineIndependent/ShaderLang.cpp:1726
#12 0x0000000000630b07 in ?? ()
#13 0x0000000000122f80 in ?? ()
#14 0x0000000000651de0 in ?? ()
#15 0x000000000169c068 in ?? ()
#16 0x000000000169b018 in ?? ()
#17 0x00007f0001083be8 in ?? ()
#18 0x00007f0001083c20 in ?? ()
#19 0x00007f0001083be8 in ?? ()
#20 0x00007f0001083be8 in ?? ()
#21 0x00007f0001083bf4 in ?? ()
#22 0x00007f0001083be8 in ?? ()
#23 0x00007f0001083c60 in ?? ()
#24 0x0000000000000000 in ?? ()
(gdb)
/Data/Code/mesa> /Data/Code/glslang/build/StandAlone/glslangValidator --version
Glslang Version: 11:16.0.0
ESSL Version: OpenGL ES GLSL 3.20 glslang Khronos. 16.0.0
GLSL Version: 4.60 glslang Khronos. 16.0.0
SPIR-V Version 0x00010600, Revision 1
GLSL.std.450 Version 100, Revision 1
Khronos Tool ID 8
SPIR-V Generator Version 11
GL_KHR_vulkan_glsl version 100
ARB_GL_gl_spirv version 100
```
Contributor guide
Research direction
Reproduce the failure on Haiku with the glslangValidator command shown in the issue, then start at glslang/MachineIndependent/SymbolTable.cpp:303 and the related definitions in SymbolTable.h. Use the supplied backtrace to investigate the crash during symbol-table cleanup; done means the command completes without a segmentation fault.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100