Subject: lib/5731: User application gets SEGV when linked with libc
To: None <gnats-bugs@gnats.netbsd.org>
From: The Terminator rAT <rat@nas.nasa.gov>
List: netbsd-bugs
Date: 07/09/1998 15:21:12
>Number: 5731
>Category: lib
>Synopsis: User application gets SEGV when linked with libc
>Confidential: yes
>Severity: serious
>Priority: medium
>Responsible: lib-bug-people (Library Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Jul 9 15:35:01 1998
>Last-Modified:
>Originator: The Terminator rAT
>Organization:
NAS Facility, NASA Ames Research Center
>Release: <NetBSD-current source date> NetBSD-1.3.2/i386 from CD
>Environment:
System: NetBSD nosferatu 1.3.2 NetBSD 1.3.2 (NOSFERATU) #2: Thu Jun 25 16:58:32 PDT 1998 root@nosferatu:/usr/src/sys/arch/i386/compile/NOSFERATU i386
Machine was installed from NetBSD-1.3.2 CD, only kernel custom.
>Description:
Helping port an application which dumps core on NetBSD-1.3.2/i386 (in
gethostbyname2()) when linked with libc ctype's, but works when linked
statically against a .o generated from the library sources.
Linked against /usr/lib/libc.so.12.20:
rat@nosferatu ~/work/pbsdedtime 1098% gcc -o pbsdedtime misc.o net_utils.o pbsdedtime.o
rat@nosferatu ~/work/pbsdedtime 1099% ./pbsdedtime hopper
Segmentation fault (core dumped)
rat@nosferatu ~/work/pbsdedtime 1100% gdb ./pbsdedtime ./pbsdedtime.core
GDB is free software and you are welcome to 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.
GDB 4.16 (i386-netbsd), Copyright 1996 Free Software Foundation, Inc...
Core was generated by `pbsdedtime'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/libexec/ld.so...done.
Reading symbols from /usr/lib/libc.so.12.20...done.
#0 0x4003059b in gethostbyname2 ()
(gdb) where
#0 0x4003059b in gethostbyname2 ()
#1 0x400304a7 in gethostbyname ()
#2 0x1b87 in getHostAddress (HostName=0xefbfd1b4 "wk199.nas.nasa.gov",
buffer=0xefbfcf78 "") at net_utils.c:100
#3 0x1cd2 in openTcpClientSocket (HostName=0xefbfd1b4 "wk199.nas.nasa.gov",
ServiceName=0xefbfd194 "schedule", SockOptions=0x0) at net_utils.c:131
#4 0x24e1 in main (argc=1, argv=0xefbfd4ec) at pbsdedtime.c:203
(gdb) quit
rat@nosferatu ~/work/pbsdedtime 1101% ldd pbsdedtime
pbsdedtime:
-lc.12 => /usr/lib/libc.so.12.20 (0x4001d000)
But, if one links it with ctype built from the library sources, it works:
rat@nosferatu ~/work/pbsdedtime 1102% gcc -g -Wall -I/usr/src/lib/libc/include -c /usr/src/lib/libc/gen/ctype_.c
rat@nosferatu ~/work/pbsdedtime 1105% gcc -o pbsdedtime misc.o net_utils.o pbsdedtime.o ctype_.o
rat@nosferatu ~/work/pbsdedtime 1106% ./pbsdedtime hopper
HOPPER 07/09/1998 16:00-19:00 07/09/1998 PBS Scheduler dev/test.
rat@nosferatu ~/work/pbsdedtime 1107%
>How-To-Repeat:
I don't know. The code which exhibits the error is available at :
http://www.cynical.org/~rat/ctype-segv.tar.gz
>Fix:
Short-term, explicitly link with the ctype_.o created from the library
sources (/usr/src/lib/libc/gen/ctype_.c).
>Audit-Trail:
>Unformatted:
no
Application catches SEGV in gethostbyname2() if linked with libc ctype object.
serious
medium
sw-bug