Package: binutils
Version: 2.16.1-3

I hit this segfault[1] when building d-i.
I rebuilt binutils unstripped, reproduced & collected a backtrace[2].
An obvious NULL-pointer dereference.

I don't know if the bug is that its just not checking the pointer before
accessing it, or if a NULL pointer should never have made it this far.

I did do some blackbox testing and determined that 3 of the -u
arguments[3] will cause a segfault whenever they are used alone.  If I
remove these three args, gcc completes without error.

[1]
...
reducing libc.so.6.1
Command failed with status 1 : gcc -nostdlib -nostartfiles -shared 
-Wl,-soname=libc.so.6.1 -uwctomb -ufclose -ufreopen64 -ugetmntent -usleep 
-uumask -usend -u__fxstat -usetutent -uisspace -ulocaltime -ugetpt -ugetppid 
-uutime -ustrnlen -u__libc_sigaction -u__sched_getparam -urecvfrom -uopendir 
-ustderr -uklogctl -usnprintf -uoptind -umemset -usync -ustrerror -usyslog 
-u_libc_intl_domainname -ustrcasestr -u__ctype_get_mb_cur_max -uindex -ustrcspn 
-uopenlog -uaccess -ugrantpt -ucfmakeraw -u__dcgettext -uioperm -umunmap 
-uh_errno -ufputc -u_IO_list_lock -uwait -uwcwidth -usendmsg -uiswalnum 
-urename -u__environ -umkdir -urealloc -uprintf -uunlockpt -u__strcasecmp 
-uselect -ugetchar -urindex -uendservent -ustrdup -umprotect -u__resp 
-u__strtold_internal -uisatty -utdelete -ustatfs64 -uwarn -ugettimeofday 
-uherror -uupdwtmp -uchdir -u__errno_location -u_dl_vsym -uutmpname 
-uinet_nsap_ntoa -ufnmatch -u__strtof_internal -usysconf -u__res_maybe_init 
-u__poll -uaccept -uabort -ufprintf -ustrtoll -ustrlen -ustrncat -uchroot 
-uclearerr -ugetgroups -ufeof -uwrite -u__gettimeofday -urewind 
-u__sched_get_priority_max -uvasprintf -uunsetenv -u__cxa_finalize 
-ugethostbyname -uioctl -uunlink -utcgetpgrp -usigdelset -ugetutline_r -ustdin 
-u__rawmemchr -uenviron -u__xstat -usetrlimit64 -u_IO_iter_next -ubasename 
-u__sigsetjmp -uuname -ustrtoul -uswapoff -uexeclp -u__clone2 -ufwrite 
-u__libc_current_sigrtmax_private -ugetpid -usetgid -ufeof_unlocked -uexecl 
-ucfgetospeed -usendto -uexecv -umemchr -umkfifo -usys_siglist -uconnect 
-usigemptyset -udirname -u__getpid -uendpwent -ureboot -uopen64 -usetsid 
-usprintf -u__ctype_b_loc -ustrrchr -uregexec -ugethostbyaddr -ustrchrnul 
-uasprintf -uferror -u__sigsuspend -ugetcwd -ufree -utfind -ugetpeername -urecv 
-u_IO_list_resetlock -uputchar -u__strtol_internal -utimes -usigsetmask 
-ugetservbyname -uqsort -u__libc_thread_freeres -u__xstat64 -u__libc_start_main 
-u__sysctl -uopen -ustrncpy -uusleep -ugetopt_long -untohl -usystem 
-ustrcasecmp -udcgettext -untohs -umemcmp -u__asprintf -udprintf -umkstemp64 
-ulisten -uswapon -u__libc_current_sigrtmin_private -ufscanf -ubind -uvsnprintf 
-u__assert_fail -ustrtok_r -u_dl_sym -usigfillset -ucfsetospeed -ustpcpy 
-u__libc_system -ugeteuid -ugetrlimit64 -u__libc_pthread_init -utsearch 
-ugetrlimit -urealpath -utolower -utcgetattr -ufopen64 -u__libc_dl_error_tsd 
-ustrpbrk -u_IO_iter_end -ualarm -upipe -uscandir -ustrncasecmp 
-u__sched_getscheduler -urandom -u_IO_putc -ulseek64 -usetmntent -ustrtol 
-u__sysv_signal -upause -ustrtok -ustrtod -u_environ -uwritev -ufputs -ufchmod 
-usetlogmask -udup2 -utwalk -uinet_ntop -ubcmp -ustrsep -uptsname_r -uinet_ntoa 
-umemcpy -ufileno -uperror -usrandom -uumount -uendutent -usigismember 
-ustrncmp -umbtowc -ustrcat -ugetsockname -uclose -ustrchr -u__fcntl 
-ugetnetbyaddr -uregcomp -uvdprintf -ufcntl -u__getdelim -u__lxstat64 
-usigaction -usetsockopt -ucloselog -ustrftime -uchmod -ushutdown -usscanf 
-usigprocmask -uraise -uputs -u__libc_fork -udup -ureaddir64 -ulchown -ufread 
-ustrsignal -uexecvp -u__strtod_internal -uexecve -umount -ugetpwuid -uvsprintf 
-usetuid -umalloc -ustdout -u__register_atfork -upopen -urecvmsg -utowlower 
-uwaitpid -uoptarg -ulongjmp -u_IO_iter_file -u__ctype_tolower_loc -ucalloc 
-usetbuf -unl_langinfo -u__libc_siglongjmp -usetitimer -u_dl_close -umempcpy 
-ulseek -ugetpwent -ucfsetispeed -u__res_nclose -u__lxstat -ukill -ufflush 
-ummap64 -u__xmknod -usethostname -ummap -uptsname -u_IO_iter_begin 
-u__getpagesize -utmpnam -u_setjmp -uread -udaemon -ustrstr -uctime -ufsync 
-umemmove -usignal -uiswpunct -umblen -ustrcmp -utoupper -ufgetc -upclose 
-uftruncate64 -ureaddir -ufgets -ugetgid -uendmntent -uregfree 
-u__h_errno_location -uftell -uexit -uttyname_r -u_dl_addr -u__strdup 
-ugetpagesize -ugmtime -usymlink -upututline -u__stpncpy -u__sched_setscheduler 
-u_IO_list_unlock -ugethostname -ugetnameinfo -usysinfo -usocket -ustrcpy 
-ubsearch -ureadlink -u_exit -usetlocale -uumount2 -ufgets_unlocked 
-u__fxstat64 -ufopen -uputenv -ufdopen -uerrno -uvsyslog -urmdir -uin6addr_any 
-u__res_state -ufork -uvprintf -ualphasort -u__libc_longjmp -usched_yield 
-ugetenv -uatoi -ulink -uvfprintf -uiswblank -ugetnetbyname -u_IO_getc -uwait3 
-u_outb -u__cxa_atexit -ustrspn -uungetc -uhtonl -u__fsetlocking -ustrndup 
-usyscall -u__libc_allocate_rtsig_private -umbrtowc -uinet_pton -uhtons 
-u__on_exit -usetenv -u__sched_get_priority_min -ugetopt -umkstemp -uinet_aton 
-u_dl_open -utcsetattr -usigsuspend -uregerror -u__ctype_toupper_loc 
-usigaddset -uclosedir -ugetegid -ugetuid -uchown -utime -o 
./tmp/netboot/tree/lib/libc.so.6.1-so /usr/lib/libc_pic/soinit.o 
/usr/lib//libc_pic.a /usr/lib/libc_pic/sofini.o /lib//ld-linux-ia64.so.2 -u 
__dso_handle -Wl,--version-script=/usr/lib//libc_pic.map -lgcc -L 
./tmp/netboot/tree/lib -L./tmp/netboot/tree/usr/lib -L./tmp/netboot/udeblibs 
-L/lib/ -L/usr/lib/ -L/usr/X11R6/lib/ -L./tmp/netboot/tree//usr/lib/cdebconf 
-L./tmp/netboot/tree//usr/lib/cdebconf -L./tmp/netboot/tree//usr/lib/cdebconf 
-L./tmp/netboot/tree//usr/lib/cdebconf -L./tmp/netboot/tree//usr/lib/cdebconf 
-L./tmp/netboot/tree//usr/lib/cdebconf -L./tmp/netboot/tree//usr/lib/cdebconf 
-L./tmp/netboot/tree//usr/lib/cdebconf -L./tmp/netboot/tree//usr/lib/cdebconf
With output: collect2: ld terminated with signal 11 [Segmentation fault], core 
dumped
/usr/bin/ld:
make[2]: *** [stamps/tree-netboot-stamp] Error 1
make[1]: *** [_build] Error 2
make: *** [build_netboot] Error 2



[EMAIL PROTECTED]:~/svn/d-i.trunk/installer/build$ gdb /usr/bin/ld
ld             ldapdelete     ldappasswd     ldd
ldapadd        ldapmodify     ldapsearch     ldd.ia32-libs
ldapcompare    ldapmodrdn     ldapwhoami     lddlibc4
[EMAIL PROTECTED]:~/svn/d-i.trunk/installer/build$ gdb /usr/bin/ld core
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "ia64-linux"...Using host libthread_db library 
"/lib/tls/libthread_db.so.1".

Core was generated by `/usr/bin/ld -shared -o 
./tmp/netboot/tree/lib/libc.so.6.1-so -uwctomb -ufclose'.
Program terminated with signal 11, Segmentation fault.

warning: current_sos: Can't read pathname for load map: Input/output error

Reading symbols from /usr/lib/libfakeroot/libfakeroot-sysv.so.0...done.
Loaded symbols for /usr/lib/libfakeroot/libfakeroot-sysv.so.0
Reading symbols from /usr/lib/libbfd-2.16.1.so...done.
Loaded symbols for /usr/lib/libbfd-2.16.1.so
Reading symbols from /lib/tls/libc.so.6.1...Reading symbols from 
/usr/lib/debug/lib/tls/libc-2.3.5.so...done.
done.
Loaded symbols for /lib/tls/libc.so.6.1
Reading symbols from /lib/tls/libdl.so.2...Reading symbols from 
/usr/lib/debug/lib/tls/libdl-2.3.5.so...done.
done.
Loaded symbols for /lib/tls/libdl.so.2
Reading symbols from /lib/ld-linux-ia64.so.2...Reading symbols from 
/usr/lib/debug/lib/ld-2.3.5.so...done.
done.
Loaded symbols for /lib/ld-linux-ia64.so.2
#0  _bfd_default_error_handler (fmt=0x2000000000173e56 "")
    at ../../bfd/bfd.c:481
481                       if (abfd->my_archive)
(gdb) bt
#0  _bfd_default_error_handler (fmt=0x2000000000173e56 "")
    at ../../bfd/bfd.c:481
#1  0x2000000000117a10 in _bfd_elf_merge_symbol (abfd=Variable "abfd" is not 
available.
)
    at ../../bfd/elflink.c:952
#2  0x200000000011f650 in bfd_elf_link_add_symbols (abfd=0x60000000000b8b40,
    info=0x60000000000115e8) at ../../bfd/elflink.c:3776
#3  0x200000000011e240 in elf_link_add_archive_symbols (
    abfd=0x6000000000098490, info=0x60000000000115e8)
    at ../../bfd/elflink.c:4650
#4  0x200000000011ec30 in bfd_elf_link_add_symbols (abfd=Variable "abfd" is not 
available.
)
    at ../../bfd/elflink.c:4706
#5  0x400000000001c380 in load_symbols (entry=0x600000000001c540,
    place=0x60000fffff877600) at ../../ld/ldlang.c:1869
#6  0x400000000002bbd0 in open_input_bfds (s=0x600000000001c540, force=0)
    at ../../ld/ldlang.c:2279
#7  0x400000000002c1a0 in lang_process () at ../../ld/ldlang.c:4743
#8  0x4000000000031c10 in main (argc=426, argv=0x60000fffff8778d8)
    at ../../ld/ldmain.c:458
(gdb) bt full
#0  _bfd_default_error_handler (fmt=0x2000000000173e56 "")
    at ../../bfd/bfd.c:481
        abfd = (bfd *) 0x0
        ap = Cannot access memory at address 0xe8
(gdb)

[3]
  -uh_errno
  -u__resp
  -uerrno



Reply via email to