Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TS] flatc silently crashing (segmentation fault) #8299

Open
Clonkex opened this issue May 6, 2024 · 1 comment
Open

[TS] flatc silently crashing (segmentation fault) #8299

Clonkex opened this issue May 6, 2024 · 1 comment

Comments

@Clonkex
Copy link

Clonkex commented May 6, 2024

Minimal replication schema:

namespace SomeNamespace;

enum Colour : byte { Red, Green }

struct SubStruct {
    colour: Colour;
}

struct BaseStruct {
    test: SubStruct;
}

When running flatc.exe --ts test.fbs, the command takes a little longer to run than normal and fails to complete. There are no outputs in the console, but the files are not completely generated, and echo %ERRORLEVEL% returns -1073741819. I'm not sure what I'm doing wrong. It seems to be related to the enum in the sub-struct.

OS: Windows 11 Version 10.0.22621 Build 22621
flatc version: 24.3.25

@Clonkex
Copy link
Author

Clonkex commented May 6, 2024

Compiling from source and running the same test under Ubuntu 22.04 LTS gives a segfault. I have no clue what I'm doing with gdb but this is what I get with a backtrace:

(gdb) backtrace
#0  0x00005555555ab30e in std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::size() const ()
#1  0x000055555570bc95 in flatbuffers::(anonymous namespace)::ImportDefinition flatbuffers::ts::TsGenerator::AddImport<flatbuffers::EnumDef>(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, flatbuffers::(anonymous namespace)::ImportDefinition, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, flatbuffers::(anonymous namespace)::ImportDefinition> > >&, flatbuffers::Definition const&, flatbuffers::EnumDef const&) ()
#2  0x00005555557142fd in flatbuffers::ts::TsGenerator::GenTypeName(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, flatbuffers::(anonymous namespace)::ImportDefinition, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, flatbuffers::(anonymous namespace)::ImportDefinition> > >&, flatbuffers::Definition const&, flatbuffers::Type const&, bool, bool) ()
#3  0x0000555555714a7b in flatbuffers::ts::TsGenerator::GenStructArgs(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, flatbuffers::(anonymous namespace)::ImportDefinition, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, flatbuffers::(anonymous namespace)::ImportDefinition> > >&, flatbuffers::StructDef const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#4  0x0000555555714a12 in flatbuffers::ts::TsGenerator::GenStructArgs(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, flatbuffers::(anonymous namespace)::ImportDefinition, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, flatbuffers::(anonymous namespace)::ImportDefinition> > >&, flatbuffers::StructDef const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#5  0x000055555572422e in flatbuffers::ts::TsGenerator::GenStruct(flatbuffers::Parser const&, flatbuffers::StructDef&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, flatbuffers::(anonymous namespace)::ImportDefinition, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, flatbuffers::(anonymous namespace)::ImportDefinition> > >&) ()
#6  0x0000555555710ba7 in flatbuffers::ts::TsGenerator::generateStructs() ()
#7  0x000055555570fff2 in flatbuffers::ts::TsGenerator::generate() ()
#8  0x000055555570ad70 in flatbuffers::GenerateTS(flatbuffers::Parser const&, 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&) ()
#9  0x000055555570b0dd in flatbuffers::(anonymous namespace)::TsCodeGenerator::GenerateCode(flatbuffers::Parser const&, 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&) ()
#10 0x00005555557d5c97 in flatbuffers::FlatCompiler::GenerateCode(flatbuffers::FlatCOptions const&, flatbuffers::Parser&) ()
#11 0x00005555557d6b2c in flatbuffers::FlatCompiler::Compile(flatbuffers::FlatCOptions const&) ()
#12 0x00005555557e9ead in main ()

I don't have time to investigate this myself but I hope it can be fixed quickly anyway 😊

@Clonkex Clonkex changed the title [TS] flatc silently crashing [TS] flatc silently crashing (segmentation fault) May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant