Segmentation fault in DMD - how to debug?
Andrey Zherikov
andrey.zherikov at gmail.com
Wed Sep 28 22:48:47 UTC 2022
I'm refactoring my library by mostly moving functions between
modules and I get DMD crashes pretty often. The latest example:
```
(No debugging symbols found in /usr/bin/dmd)
(gdb) r -c
-of.dub/build/argparse-test-library-unittest-linux.posix-x86_64-dmd_v2.100.0-85E634C9744FC817BD0D2766A2B6CFD9/argparse-test-library.o -debug -g -unittest -w -version=Have_argparse -Isource/ .dub/code/argparse-test-library-unittest-linux.posix-x86_64-dmd_v2.100.0-662575AE9496601C3D84B10DCD65DAFE_dub_test_root.d source/argparse/ansi.d source/argparse/internal/arguments.d source/argparse/internal/completer.d source/argparse/internal/help.d source/argparse/internal/lazystring.d source/argparse/internal/package.d source/argparse/internal/parser.d source/argparse/internal/subcommands.d source/argparse/internal/utils.d source/argparse/package.d -vcolumns
Starting program: /usr/bin/dmd -c
-of.dub/build/argparse-test-library-unittest-linux.posix-x86_64-dmd_v2.100.0-85E634C9744FC817BD0D2766A2B6CFD9/argparse-test-library.o -debug -g -unittest -w -version=Have_argparse -Isource/ .dub/code/argparse-test-library-unittest-linux.posix-x86_64-dmd_v2.100.0-662575AE9496601C3D84B10DCD65DAFE_dub_test_root.d source/argparse/ansi.d source/argparse/internal/arguments.d source/argparse/internal/completer.d source/argparse/internal/help.d source/argparse/internal/lazystring.d source/argparse/internal/package.d source/argparse/internal/parser.d source/argparse/internal/subcommands.d source/argparse/internal/utils.d source/argparse/package.d -vcolumns
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x0000555555822ee6 in
getTypePointerBitmap::PointerBitmapVisitor::visit(TypeStruct*) ()
(gdb) where
#0 0x0000555555822ee6 in
getTypePointerBitmap::PointerBitmapVisitor::visit(TypeStruct*) ()
#1 0x0000555555822bc9 in
dmd.traits.getTypePointerBitmap(dmd.globals.Loc, dmd.mtype.Type,
dmd.root.array.Array!(ulong).Array*) ()
#2 0x000055555581d832 in
dmd.traits.semanticTraits(dmd.expression.TraitsExp,
dmd.dscope.Scope*) ()
#3 0x00005555557d4ded in
ExpressionSemanticVisitor::visit(TraitsExp*) ()
#4 0x00005555558499af in
dmd.initsem.inferType(dmd.init.Initializer, dmd.dscope.Scope*) ()
#5 0x000055555582b965 in
DsymbolSemanticVisitor::visit(VarDeclaration*) ()
#6 0x00005555556f06ad in
dmd.dsymbolsem.templateInstanceSemantic(dmd.dtemplate.TemplateInstance, dmd.dscope.Scope*, dmd.root.array.Array!(dmd.expression.Expression).(gdb)
#7 0x00005555556c7ee4 in
Semantic3Visitor::visit(AggregateDeclaration*) ()
#8 0x00005555556c83fc in
Semantic3Visitor::visit(TemplateInstance*) ()
#9 0x00005555558e317e in dmd.mars.tryMain(ulong, const(char)**,
ref dmd.globals.Param) ()
#10 0x00005555558f27d1 in D main ()
```
How do you debug and fix these things?
More information about the Digitalmars-d
mailing list