https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80590
--- Comment #13 from Tom de Vries <vries at gcc dot gnu.org> --- (In reply to Tom de Vries from comment #12) > and g-exptty.adb is still one of the problematic files: When running in the debugger, instead I run into a sigsegv in strlen instead of a hang: ... Program received signal SIGSEGV, Segmentation fault. 0x00007ffff67811e2 in ?? () from /lib/libc.so.6 (gdb) bt #0 0x00007ffff67811e2 in ?? () from /lib/libc.so.6 #1 0x00000000026af8b5 in libiberty_vprintf_buffer_size (format=0x26c112b "%s:%d", args=0x7fffffffbe10) at libiberty/vprintf-support.c:105 #2 0x00000000026af607 in xvasprintf (format=0x26c112b "%s:%d", args=0x7fffffffbe10) at libiberty/xvasprintf.c:57 #3 0x00000000026af24f in xasprintf (fmt=0x26c112b "%s:%d") at libiberty/xasprintf.c:47 #4 0x00000000008b689e in internal_error_function (context=0x3a2dd60 <global_diagnostic_context>, msgid=0x2e2baff "in %s, at %s:%d", ap=0x7fffffffc180) at gcc/ada/gcc-interface/misc.c:336 #5 0x00000000026147d5 in diagnostic_report_diagnostic (context=0x3a2dd60 <global_diagnostic_context>, diagnostic=0x7fffffffc080) at gcc/diagnostic.c:965 #6 0x0000000002614e3f in diagnostic_impl(rich_location *, int, const char *, va_list *, <anonymous enum>) ( richloc=0x7fffffffc0f0, opt=-1, gmsgid=0x2e2baff "in %s, at %s:%d", ap=0x7fffffffc180, kind=DK_ICE) at gcc/diagnostic.c:1099 #7 0x00000000026163ef in internal_error (gmsgid=0x2e2baff "in %s, at %s:%d") at gcc/diagnostic.c:1422 #8 0x0000000002616673 in fancy_abort ( file=0x26bec90 "gcc/ada/raise.c", line=87, function=0x26bede0 <__gnat_eh_personality::__FUNCTION__> "__gnat_eh_personality") at gcc/diagnostic.c:1488 #9 0x000000000087e9de in __gnat_eh_personality () at gcc/ada/raise.c:87 #10 0x00007ffff69eda43 in _Unwind_RaiseException (exc=0x3bd6d60) at /scratch/gcc/w/gcc-4.7.3/linux/gcc-2012.09-90/libgcc/unwind.inc:113 #11 0x000000000087fc3f in __gnat_Unwind_RaiseException (e=0x3bd6d60) at gcc/ada/raise-gcc.c:1427 #12 0x000000000094e98a in ada.exceptions.exception_propagation.propagate_gcc_exception (gcc_exception=0x0) at gcc/ada/libgnat/a-exexpr.adb:322 #13 0x000000000094e9c1 in ada.exceptions.exception_propagation.propagate_exception (excep=<optimized out>) at gcc/ada/libgnat/a-exexpr.adb:354 #14 0x000000000094e9e3 in ada.exceptions.complete_and_propagate_occurrence (x=0x3bd6da0) at gcc/ada/libgnat/a-except.adb:937 #15 0x000000000094f9dc in <__gnat_raise_exception> (e=0x337fb00 <rtsfind.re_not_available>, message=...) at gcc/ada/libgnat/a-except.adb:978 #16 0x0000000000b68531 in rtsfind.load_fail (s=..., u_id=system_relative_delays, id=ro_rd_delay_for) at gcc/ada/rtsfind.adb:851 #17 0x0000000000b68724 in rtsfind.load_rtu (u_id=system_relative_delays, id=ro_rd_delay_for, use_setting=false) at gcc/ada/rtsfind.adb:987 #18 0x0000000000b69839 in rtsfind.rte () at gcc/ada/rtsfind.adb:1380 #19 0x0000000000b69d6d in rtsfind.rte_available (e=ro_rd_delay_for) at gcc/ada/rtsfind.adb:1462 #20 0x0000000000a52ac3 in exp_ch9.expand_n_delay_relative_statement (n=2465) at gcc/ada/exp_ch9.adb:8089 #21 0x0000000000ab551c in expander.expand (n=2465) at gcc/ada/expander.adb:214 #22 0x0000000000b97fd0 in sem.analyze (n=2465) at gcc/ada/sem.adb:765 #23 0x0000000000c4575b in sem_ch5.analyze_statements (l=-99999961) at gcc/ada/sem_ch5.adb:3637 #24 0x0000000000c4208b in sem_ch5.analyze_if_statement (n=2450) at gcc/ada/sem_ch5.adb:1686 #25 0x0000000000b9770b in sem.analyze (n=2450) at gcc/ada/sem.adb:306 #26 0x0000000000c4575b in sem_ch5.analyze_statements (l=-99999963) at gcc/ada/sem_ch5.adb:3637 #27 0x0000000000bca547 in sem_ch11.analyze_handled_statements (n=2449) at gcc/ada/sem_ch11.adb:426 #28 0x0000000000b976d5 in sem.analyze (n=2449) at gcc/ada/sem.adb:297 #29 0x0000000000c4bb6c in sem_ch6.analyze_subprogram_body_helper () at gcc/ada/sem_ch6.adb:4356 #30 0x0000000000c4a1c0 in sem_ch6.analyze_subprogram_body (n=2335) at gcc/ada/sem_ch6.adb:2349 #31 0x0000000000b97cb2 in sem.analyze (n=2335) at gcc/ada/sem.adb:547 #32 0x0000000000c07d04 in sem_ch3.analyze_declarations (l=-99999984) at gcc/ada/sem_ch3.adb:2608 #33 0x0000000000c5bb92 in sem_ch7.analyze_package_body_helper (n=2296) at gcc/ada/sem_ch7.adb:857 #34 0x0000000000c5b15b in sem_ch7.analyze_package_body (n=2296) at gcc/ada/sem_ch7.adb:180 #35 0x0000000000b97a47 in sem.analyze (n=2296) at gcc/ada/sem.adb:444 #36 0x0000000000bc09c2 in sem_ch10.analyze_compilation_unit (n=2269) at gcc/ada/sem_ch10.adb:889 #37 0x0000000000b97417 in sem.analyze (n=2269) at gcc/ada/sem.adb:180 #38 0x0000000000b98b9b in sem.semantics.do_analyze () at gcc/ada/sem.adb:1350 #39 0x0000000000b98fce in sem.semantics () at gcc/ada/sem.adb:1532 #40 0x0000000000acdbef in frontend () at gcc/ada/frontend.adb:409 #41 0x0000000000d93fde in gnat1drv () at gcc/ada/gnat1drv.adb:1140 #42 0x00000000008b61e1 in gnat_parse_file () at gcc/ada/gcc-interface/misc.c:122 #43 0x0000000001530cad in compile_file () at gcc/toplev.c:456 #44 0x00000000015333af in do_compile () at gcc/toplev.c:2037 #45 0x000000000153374f in toplev::main (this=0x7fffffffde40, argc=21, argv=0x7fffffffdf48) at gcc/toplev.c:2172 #46 0x00000000025f529b in main (argc=21, argv=0x7fffffffdf48) at gcc/main.c:39 ... which I can trace back to: ... (gdb) up #4 0x00000000008b689e in internal_error_function (context=0x3a2dd60 <global_diagnostic_context>, msgid=0x2e2baff "in %s, at %s:%d", ap=0x7fffffffc180) at gcc/ada/gcc-interface/misc.c:336 336 loc = xasprintf ("%s:%d", xloc.file, xloc.line); (gdb) p xloc.file $10 = 0x0 ... Something like this would fix it: ... diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c index 081a63a..1d5a476 100644 --- a/gcc/ada/gcc-interface/misc.c +++ b/gcc/ada/gcc-interface/misc.c @@ -330,6 +330,8 @@ internal_error_function (diagnostic_context *context, const char *msgid, sp.Array = buffer; xloc = expand_location (input_location); + if (!xloc.file) + xloc.file = "<unknown>"; if (context->show_column && xloc.column != 0) loc = xasprintf ("%s:%d:%d", xloc.file, xloc.line, xloc.column); else ...