https://bugs.kde.org/show_bug.cgi?id=435615

            Bug ID: 435615
           Summary: Reproducible crash within clang when attempting to
                    check Akonadi
           Product: clazy
           Version: unspecified
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: unassigned-b...@kde.org
          Reporter: j...@keelhaul.me.uk
                CC: smart...@kde.org
  Target Milestone: ---

SUMMARY

When using clazy with Clang 11 to check Akonadi source, with the default
checking options as suggested in clazy's README.md, a segfault happens
triggered by the regexp in OldStyleConnect::VisitMacroExpands().  This happens
both with clazy 1.9 and master branch (1.10), at the same build stage every
time.

The full log file is attached due to its size, but the relevant part is:

1.      /usr/include/qt5/QtWidgets/qheaderview.h:259: current parser token
'Q_PRIVATE_SLOT'
2.      /usr/include/qt5/QtWidgets/qheaderview.h:53: parsing struct/union/class
body 'QHeaderView'
 #0 0x00007fbd6be00dcd
(/usr/lib/llvm/11/bin/../lib64/libLLVM-11libcxx.so+0x8eadcd)
 #1 0x00007fbd6bdfed50 llvm::sys::RunSignalHandlers()
(/usr/lib/llvm/11/bin/../lib64/libLLVM-11libcxx.so+0x8e8d50)                    
 #2 0x00007fbd6be002dd llvm::sys::CleanupOnSignal(unsigned long)
(/usr/lib/llvm/11/bin/../lib64/libLLVM-11libcxx.so+0x8ea2dd)                    
 #3 0x00007fbd6bd43180
(/usr/lib/llvm/11/bin/../lib64/libLLVM-11libcxx.so+0x82d180)
 #4 0x00007fbd6b2672b0 (/lib64/libc.so.6+0x392b0)
 #5 0x00007fbd6b267204 raise (/lib64/libc.so.6+0x39204)
 #6 0x00007fbd6b250547 abort (/lib64/libc.so.6+0x22547)
 #7 0x00007fbd69060166 (/usr/kde5/lib64/ClazyPlugin.so+0xb4166)
 #8 0x00007fbd6905ffaf (/usr/kde5/lib64/ClazyPlugin.so+0xb3faf)
 #9 0x00007fbd690653a0 bool std::__1::basic_regex<char,
std::__1::regex_traits<char>
>::__search<std::__1::allocator<std::__1::sub_match<char const*> > >(char
const*, char const*, std::__1::match_results<char const*,
std::__1::allocator<std::__1::sub_match<char const*> > >&,
std::__1::regex_constants::match_flag_type) const
/usr/include/c++/v1/regex:5948                                                  
#10 0x00007fbd690ae3b9 bool std::__1::regex_search<char const*,
std::__1::allocator<std::__1::sub_match<std::__1::__wrap_iter<char const*> > >,
char, std::__1::regex_traits<char> >(std::__1::__wrap_iter<char const*>,
std::__1::__wrap_iter<char const*>,
std::__1::match_results<std::__1::__wrap_iter<char const*>,
std::__1::allocator<std::__1::sub_match<std::__1::__wrap_iter<char const*> > >
>&, std::__1::basic_regex<char, std::__1::regex_traits<char> > const&,
std::__1::regex_constants::match_flag_type) /usr/include/c++/v1/regex:6004      
#11 0x00007fbd690ae3b9 bool std::__1::regex_match<std::__1::__wrap_iter<char
const*>, std::__1::allocator<std::__1::sub_match<std::__1::__wrap_iter<char
const*> > >, char, std::__1::regex_traits<char> >(std::__1::__wrap_iter<char
const*>, std::__1::__wrap_iter<char const*>,
std::__1::match_results<std::__1::__wrap_iter<char const*>,
std::__1::allocator<std::__1::sub_match<std::__1::__wrap_iter<char const*> > >
>&, std::__1::basic_regex<char, std::__1::regex_traits<char> > const&,
std::__1::regex_constants::match_flag_type) /usr/include/c++/v1/regex:6106      
#12 0x00007fbd690ae3b9 bool std::__1::regex_match<std::__1::char_traits<char>,
std::__1::allocator<char>,
std::__1::allocator<std::__1::sub_match<std::__1::__wrap_iter<char const*> > >,
char, std::__1::regex_traits<char> >(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::match_results<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::const_iterator,
std::__1::allocator<std::__1::sub_match<std::__1::__wrap_iter<char const*> > >
>&, std::__1::basic_regex<char, std::__1::regex_traits<char> > const&,
std::__1::regex_constants::match_flag_type) /usr/include/c++/v1/regex:6148      
#13 0x00007fbd690ae3b9 OldStyleConnect::VisitMacroExpands(clang::Token const&,
clang::SourceRange const&, clang::MacroInfo const*)
/ws/frameworks/sdk/clazy/src/checks/level2/old-style-connect.cpp:286       
#14 0x00007fbd690e043b ClazyPreprocessorCallbacks::MacroExpands(clang::Token
const&, clang::MacroDefinition const&, clang::SourceRange, clang::MacroArgs
const*) /ws/frameworks/sdk/clazy/src/checkbase.cpp:65
#15 0x00007fbd6f6cd475
(/usr/lib/llvm/11/bin/../lib64/libclang-cpp.so.11.1+0x9b3475)
#16 0x00007fbd6f6ead05
clang::Preprocessor::HandleMacroExpandedIdentifier(clang::Token&,
clang::MacroDefinition const&)
(/usr/lib/llvm/11/bin/../lib64/libclang-cpp.so.11.1+0x9d0d05)                   
#17 0x00007fbd6f7070fc clang::Preprocessor::HandleIdentifier(clang::Token&)
(/usr/lib/llvm/11/bin/../lib64/libclang-cpp.so.11.1+0x9ed0fc)                   
#18 0x00007fbd6f6a19e7 clang::Lexer::LexIdentifier(clang::Token&, char const*)
(/usr/lib/llvm/11/bin/../lib64/libclang-cpp.so.11.1+0x9879e7)                   

STEPS TO REPRODUCE
1. Run clazy over current Akonadi source, observe crash above

SOFTWARE/OS VERSIONS
Operating System: Gentoo
KDE Plasma Version: 5.21.80
KDE Frameworks Version: 5.81.0
Qt Version: 5.15.2
Kernel Version: 5.4.97-gentoo-x86_64 (64-bit)
Graphics Platform: X11
Processors: 3 × AMD Phenom(tm) II X3 705e Processor

clang version 11.1.0
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/11/bin

ADDITIONAL INFORMATION

This is using the Clang runtime (libcxx, libcxxabi, libunwind).
System, Qt and Frameworks are all compiled with Clang.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to