Disassembled instruction 0xC8 0x0 0x0 0x0 is "enter $0x0, $0x0", which is correct. Without valgrind my program works fine. Reproducible: Always Steps to Reproduce: 1. Create "Hello world" application with D language. Create file hello.d with contents: // **** Begin of the code **** import std.stdio; void main(){ writeln("Hello world"); } // **** End of the code **** 2. Compile with command "dmd hello.d". 3. Run "valgrind ./hello", and you will get the error.