https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123366
--- Comment #19 from Mark Millard <markmigm at gmail dot com> ---
(In reply to Mark Millard from comment #18)
Summary:
Looks like linemap_lookup is returning the null pointer value
and the calling code does not check for that.
Details leading to that:
> Since there appear to be good vs. bad instances of the likes of:
>
> /wrkdirs/usr/ports/lang/gcc16-devel/work/.build/gcc/f951
>
> or of:
>
> /wrkdirs/usr/ports/lang/gcc16-devel/work/.build/./gcc/gfortran
>
> might someone be able to report the ldd -a output for an
> instance of each status for one of those (or other such example)?
Turns out that gfortran is vforking to f951 which gets the
error.
(gdb) set follow-fork-mode child
(gdb) run -B/wrkdirs/usr/ports/lang/gcc16-devel/work/.build/./gcc/
-B/usr/local/x86_64-portbld-freebsd16.0/bin/
-B/usr/local/x86_64-portbld-freebsd16.0/lib/ -isystem
/usr/local/x86_64-portbld-freebsd16.0/include -isystem
/usr/local/x86_64-portbld-freebsd16.0/sys-include -fchecking=1
-DHAVE_CONFIG_H -I.
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran
-iquote/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/io
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../gcc
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../gcc/config
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../libquadmath
-I../.././gcc
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../libgcc
-I../libgcc
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../libbacktrace
-I../libbacktrace -I../libbacktrace -I . -Wall -Werror -fimplicit-none
-fno-repack-arrays -fno-underscoring -fallow-leading-underscore
-fbuilding-libgfortran -g -c -o generated/_abs_c17.lo
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/generated/_abs_c17.F90
Starting program: /wrkdirs/usr/ports/lang/gcc16-devel/work/.build/gcc/gfortran
-B/wrkdirs/usr/ports/lang/gcc16-devel/work/.build/./gcc/
-B/usr/local/x86_64-portbld-freebsd16.0/bin/
-B/usr/local/x86_64-portbld-freebsd16.0/lib/ -isystem
/usr/local/x86_64-portbld-freebsd16.0/include -isystem
/usr/local/x86_64-portbld-freebsd16.0/sys-include -fchecking=1
-DHAVE_CONFIG_H -I.
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran
-iquote/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/io
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../gcc
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../gcc/config
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../libquadmath
-I../.././gcc
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../libgcc
-I../libgcc
-I/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/../libbacktrace
-I../libbacktrace -I../libbacktrace -I . -Wall -Werror -fimplicit-none
-fno-repack-arrays -fno-underscoring -fallow-leading-underscore
-fbuilding-libgfortran -g -c -o generated/_abs_c17.lo
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/generated/_abs_c17.F90
[Attaching after LWP 102123 of process 41051 vfork to child LWP 102557 of
process 41052]
[New inferior 2 (process 41052)]
[Detaching vfork parent process 41051 after child exec]
[Inferior 1 (process 41051) detached]
process 41052 is executing new program:
/wrkdirs/usr/ports/lang/gcc16-devel/work/.build/gcc/f951
Thread 2.1 received signal SIGSEGV, Segmentation fault.
Address not mapped to object.
[Switching to LWP 102557 of process 41052]
linemap_check_ordinary (map=0x0) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/../libcpp/include/line-map.h:644
644 linemap_assert (MAP_ORDINARY_P (map));
(gdb) bt
#0 linemap_check_ordinary (map=0x0) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/../libcpp/include/line-map.h:644
#1 maybe_print_line (src_loc=0) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/fortran/cpp.cc:843
#2 0x0000000000a50a2a in scan_translation_unit_trad (pfile=<optimized out>) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/fortran/cpp.cc:828
#3 gfc_cpp_preprocess (source_file=<optimized out>) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/fortran/cpp.cc:685
#4 0x0000000000b3595c in gfc_new_file () at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/fortran/scanner.cc:2778
#5 0x0000000000b683d3 in gfc_init () at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/fortran/f95-lang.cc:294
#6 0x0000000000a23ac3 in lang_dependent_init (name=0x7fffffffe1b3
"/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/libgfortran/generated/_abs_c17.F90")
at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/toplev.cc:1911
#7 do_compile () at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/toplev.cc:2209
#8 toplev::main (this=this@entry=0x7fffffffdb8e, argc=<optimized out>,
argc@entry=65, argv=<optimized out>, argv@entry=0x7fffffffdc20)
at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/toplev.cc:2389
#9 0x0000000000a258ee in main (argc=65, argv=0x7fffffffdc20) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/main.cc:39
(gdb) up
#1 maybe_print_line (src_loc=0) at
/wrkdirs/usr/ports/lang/gcc16-devel/work/gcc-16-20251130/gcc/fortran/cpp.cc:843
843 = linemap_check_ordinary (linemap_lookup (line_table, src_loc));
(gdb) list
838 a line marker. */
839 static void
840 maybe_print_line (location_t src_loc)
841 {
842 const line_map_ordinary *map
843 = linemap_check_ordinary (linemap_lookup (line_table, src_loc));
844 int src_line = SOURCE_LINE (map, src_loc);
845
846 /* End the previous line of text. */
847 if (print.printed)
Looks like linemap_lookup (in line 843) is returning the null
pointer value and the calling/using code does not check for
or handle that. I've currently no clue why the null pointer
is returned.