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