Каждая отдельная D-программа, которую я компилирую с dmd
, аварийно завершает работу с segfault, когда я запускаю их.
Я все больше и больше убираю из программы, которую я пишу, чтобы получить самую маленькую программу, которая делает это и это
void main() {}
взломает sh с segfault.
Я не использовал D или dmd в течение нескольких недель, но, как я заметил, он работал нормально. В то время я не обновлял и не изменял dmd и не могу думать о каких-либо других изменениях или обновлениях, которые могли бы повлиять на dmd.
С тех пор, как выяснилось, что это происходило с dmd, я переустановил операционную систему и все программное обеспечение и то же поведение сохраняется.
Я попытался собрать dmd из исходного кода, но первое, что он делает, это запускает программу ../generated/build
, но это программа на D, поэтому она вылетает.
Это также происходит, если я dub init
создаю новый проект, dub build
и запускаю вывод. Это не просто вызов с использованием одного только dmd, который создает исполняемые файлы, которые создают sh.
. Я пытался вернуться к прежним версиям dmd, версиям, которые, я уверен, успешно использовал раньше, и программам, созданным с теперь они также создают sh, где раньше не создавали sh.
В дистрибутиве Linux есть lxle, но / etc / os-release идентифицирует систему как Ubuntu 18.04.4 LTS.
Буду очень признателен за любую помощь или идеи о том, что вызывает такое поведение и как его исправить.
Спасибо.
Редактировать
ldd
показывает
linux-gate.so.1 (0xb7f4b000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb7e7c000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb7e72000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7e54000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7c78000)
/lib/ld-linux.so.2 (0xb7f4d000)
Я не знаю, является ли это типичным, но перечисленные там файлы существуют или являются символическими ссылками на существующие файлы.
break main
и run
в gdb
дает
Starting program: /home/ant/dtest/dtest
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x00448865 in _D2rt19sections_elf_shared10_tlsRangesFNbNcNdNiZSQBv4util9container5array__T5ArrayTAvZQk ()
, но я не знаю, что делать с этой информацией.