Open
Description
Describe the bug
Hello!
I'm encountering an error when creating multiple rule sets and adding rules to each of them in a multi-threaded environment.
Logs and dumps
I've traced it back to yylex
in yy::seclang_parser::parse()
:
#0 0x00007bb94eea02d8 in yylex(modsecurity::Parser::Driver&) ()
from /usr/lib/libmodsecurity.so.3
#1 0x00007bb94ee78c0e in yy::seclang_parser::parse() ()
from /usr/lib/libmodsecurity.so.3
#2 0x00007bb94eeba170 in modsecurity::Parser::Driver::parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
from /usr/lib/libmodsecurity.so.3
#3 0x00007bb94eeba4a6 in modsecurity::Parser::Driver::parseFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
from /usr/lib/libmodsecurity.so.3
#4 0x00007bb94eed0a17 in modsecurity::RulesSet::loadFromUri(char const*) ()
from /usr/lib/libmodsecurity.so.3
#5 0x00007bb94eed0b68 in msc_rules_add_file ()
from /usr/lib/libmodsecurity.so.3
...(omitted for brevity)
Is this a known issue? Is Rules
meant to be initialized and filled only once and in a single-threaded context?