Skip to content

Instantly share code, notes, and snippets.

@nurse
Created May 14, 2012 18:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nurse/2695368 to your computer and use it in GitHub Desktop.
Save nurse/2695368 to your computer and use it in GitHub Desktop.
SEGV in __flockfile_internal on NetBSD
% uname -a
NetBSD nbsd.rubyci.org 6.99.4 NetBSD 6.99.4 (GENERIC) #0: Fri Apr 13 00:47:23 JST 2012 naruse@nbsd.rubyci.org:/usr/obj/sys/arch/i386/compile/GENERIC i386
% ./ruby -v
ruby 2.0.0dev (2012-05-14 trunk 35645) [i386-netbsdelf6.99.4]
% cat test/ruby/test_io2.rb
require 'test/unit'
require 'tempfile'
require_relative 'envutil'
class TestIO < Test::Unit::TestCase
def test_flush_in_finalizer1
require 'tempfile'
bug3910 = '[ruby-dev:42341]'
t = Tempfile.new("bug3910")
path = t.path
t.close
fds = []
assert_nothing_raised(TypeError, bug3910) do
500.times {
f = File.open(path, "w")
fds << f.fileno
f.print "hoge"
}
end
ensure
GC.start
GC.disable
end
end
% make TESTS='-qv ruby/test_io2.rb net/http/test_http.rb' test-all RUNRUBYOPT=--debugger
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O0 -fno-fast-math -g3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -fPIC -pipe
XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/i386-netbsdelf6.99.4 -I./include -I.
DLDFLAGS = -Wl,-soname,libruby.so.20 -fstack-protector
SOLIBS = -lpthread -lrt -lcrypt -lm
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext --debugger -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext --debugger -- --disable-gems" -qv ruby/test_io2.rb net/http/test_http.rb
GNU gdb (GDB) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486--netbsdelf".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/naruse/ruby/ruby...done.
(gdb) r
Starting program: /home/naruse/ruby/ruby --disable-gems ./test/runner.rb --ruby=./miniruby\ -I./lib\
-I.\ -I.ext/common\ \ ./tool/runruby.rb\ --extout=.ext\ --debugger\ --\ --disable-gems -qv ruby/tes
t_io2.rb net/http/test_http.rb
Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext --debugge
r -- --disable-gems" -qv
# Running tests:
TestIO#test_flush_in_finalizer1 = 0.05 s = .
TestNetHTTPContinue#test_expect_continue = [New LWP 5]
Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 5]
0xbb97a95d in __flockfile_internal () from /usr/lib/libc.so.12
(gdb) info thr
Id Target Id Frame
5 LWP 2 0xbb8990c7 in _sys___select50 () from /usr/lib/libc.so.12
4 LWP 3 0xbb8990c7 in _sys___select50 () from /usr/lib/libc.so.12
3 LWP 4 rb_enc_get_index (obj=3145475140) at encoding.c:677
* 2 LWP 5 0xbb97a95d in __flockfile_internal () from /usr/lib/libc.so.12
1 LWP 1 0xbb8990c7 in _sys___select50 () from /usr/lib/libc.so.12
(gdb) bt
#0 0xbb97a95d in __flockfile_internal () from /usr/lib/libc.so.12
#1 0xbb94ea13 in fgets () from /usr/lib/libc.so.12
#2 0xbb94a9c8 in __fgets_chk () from /usr/lib/libc.so.12
#3 0xbb940c52 in _gethtent () from /usr/lib/libc.so.12
#4 0xbb940eee in _gethtbyaddr () from /usr/lib/libc.so.12
#5 0xbb95cd68 in nsdispatch () from /usr/lib/libc.so.12
#6 0xbb940ab8 in gethostbyaddr () from /usr/lib/libc.so.12
#7 0xbb93e973 in getpeername () from /usr/lib/libc.so.12
#8 0xb9efef8c in ?? ()
#9 0xbb93ec8f in getnameinfo () from /usr/lib/libc.so.12
#10 0xbb82b0a6 in nogvl_getnameinfo (arg=0xb9efe6ec) at raddrinfo.c:202
#11 0xbbb5950c in rb_thread_blocking_region (func=0xbb82b036 <nogvl_getnameinfo>,
data1=0xb9efe6ec, ubf=0xbbb574d9 <ubf_select>, data2=0xba30a300) at thread.c:1131
#12 0xbb82b110 in rb_getnameinfo (sa=0xb9efef88, salen=16, host=0xb9efeb40 "", hostlen=1024,
serv=0x0, servlen=0, flags=0) at raddrinfo.c:226
#13 0xbb82b7e1 in rsock_ipaddr (sockaddr=0xb9efef88, norevlookup=0) at raddrinfo.c:402
#14 0xbb8242d0 in ip_peeraddr (argc=0, argv=0xb9f01028, sock=3145469380) at ipsocket.c:238
#15 0xbbb40d31 in call_cfunc (func=0xbb824217 <ip_peeraddr>, recv=3145469380, len=-1, argc=0,
argv=0xb9f01028) at vm_insnhelper.c:367
#16 0xbbb41724 in vm_call_cfunc (th=0xba30a300, reg_cfp=0xb9f80f7c, num=0, recv=3145469380,
blockptr=0x0, me=0xbb27d680) at vm_insnhelper.c:454
#17 0xbbb41cf2 in vm_call_method (th=0xba30a300, cfp=0xb9f80f7c, num=0, blockptr=0x0, flag=0,
id=24832, me=0xbb27d680, recv=3145469380) at vm_insnhelper.c:580
#18 0xbbb467cd in vm_exec_core (th=0xba30a300, initial=0) at insns.def:1018
#19 0xbbb52b83 in vm_exec (th=0xba30a300) at vm.c:1223
#20 0xbbb51501 in invoke_block_from_c (th=0xba30a300, block=0xba3900d0, self=3145438660, argc=0,
argv=0xbb7c0ed0, blockptr=0x0, cref=0x0) at vm.c:606
#21 0xbbb516d5 in rb_vm_invoke_proc (th=0xba30a300, proc=0xba3900d0, self=3145438660, argc=0,
argv=0xbb7c0ed0, blockptr=0x0) at vm.c:652
#22 0xbbb580d5 in thread_start_func_2 (th=0xba30a300, stack_start=0xb9f00000) at thread.c:453
#23 0xbbb56f5d in thread_start_func_1 (th_ptr=0xba30a300) at thread_pthread.c:658
#24 0xbb9d66b2 in ?? () from /usr/lib/libpthread.so.1
#25 0xbb8e8ab0 in ___lwp_park50 () from /usr/lib/libc.so.12
#26 0xb9f81000 in ?? ()
#27 0xbb9d5a77 in pthread_create () from /usr/lib/libpthread.so.1
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efdeec 0xb9efdeec
ebp 0xb9efdf34 0xb9efdf34
esi 0x0 0
edi 0x1 1
eip 0xbb97a95d 0xbb97a95d <__flockfile_internal+47>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function __flockfile_internal:
0xbb97a92e <+0>: push %ebp
0xbb97a92f <+1>: mov %esp,%ebp
0xbb97a931 <+3>: push %edi
0xbb97a932 <+4>: push %esi
0xbb97a933 <+5>: push %ebx
0xbb97a934 <+6>: sub $0x3c,%esp
0xbb97a937 <+9>: call 0xbb97a93c <__flockfile_internal+14>
0xbb97a93c <+14>: pop %ebx
0xbb97a93d <+15>: add $0x18bb8,%ebx
0xbb97a943 <+21>: mov 0x8(%ebp),%esi
0xbb97a946 <+24>: mov 0xc(%ebp),%edi
0xbb97a949 <+27>: mov -0x1dc(%ebx),%eax
0xbb97a94f <+33>: mov (%eax),%ecx
0xbb97a951 <+35>: test %ecx,%ecx
0xbb97a953 <+37>: jne 0xbb97a95d <__flockfile_internal+47>
0xbb97a955 <+39>: add $0x3c,%esp
0xbb97a958 <+42>: pop %ebx
0xbb97a959 <+43>: pop %esi
0xbb97a95a <+44>: pop %edi
0xbb97a95b <+45>: pop %ebp
0xbb97a95c <+46>: ret
=> 0xbb97a95d <+47>: mov 0x30(%esi),%eax
0xbb97a960 <+50>: add $0x11c,%eax
0xbb97a965 <+55>: mov %eax,(%esp)
0xbb97a968 <+58>: call 0xbb895ccc <__libc_mutex_lock@plt>
0xbb97a96d <+63>: mov 0x30(%esi),%eax
0xbb97a970 <+66>: mov 0x150(%eax),%eax
0xbb97a976 <+72>: mov %eax,-0x2c(%ebp)
0xbb97a979 <+75>: call 0xbb896a8c <__libc_thr_self@plt>
0xbb97a97e <+80>: cmp %eax,-0x2c(%ebp)
0xbb97a981 <+83>: je 0xbb97aa47 <__flockfile_internal+281>
0xbb97a987 <+89>: lea -0x1c(%ebp),%eax
0xbb97a98a <+92>: mov %eax,0x4(%esp)
0xbb97a98e <+96>: movl $0x1,(%esp)
0xbb97a995 <+103>: call 0xbb89578c <__libc_thr_setcancelstate@plt>
0xbb97a99a <+108>: mov 0x30(%esi),%eax
0xbb97a99d <+111>: mov 0x150(%eax),%edx
0xbb97a9a3 <+117>: test %edx,%edx
0xbb97a9a5 <+119>: je 0xbb97a9cb <__flockfile_internal+157>
0xbb97a9a7 <+121>: lea 0x11c(%eax),%edx
0xbb97a9ad <+127>: mov %edx,0x4(%esp)
0xbb97a9b1 <+131>: add $0x138,%eax
0xbb97a9b6 <+136>: mov %eax,(%esp)
0xbb97a9b9 <+139>: call 0xbb89584c <__libc_cond_wait@plt>
0xbb97a9be <+144>: mov 0x30(%esi),%eax
0xbb97a9c1 <+147>: mov 0x150(%eax),%ecx
0xbb97a9c7 <+153>: test %ecx,%ecx
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) f 1
#1 0xbb94ea13 in fgets () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efdf3c 0xb9efdf3c
ebp 0xb9efdf74 0xb9efdf74
esi 0x0 0
edi 0x0 0
eip 0xbb94ea13 0xbb94ea13 <fgets+59>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function fgets:
0xbb94e9d8 <+0>: push %ebp
0xbb94e9d9 <+1>: mov %esp,%ebp
0xbb94e9db <+3>: push %edi
0xbb94e9dc <+4>: push %esi
0xbb94e9dd <+5>: push %ebx
0xbb94e9de <+6>: sub $0x2c,%esp
0xbb94e9e1 <+9>: call 0xbb94e9e6 <fgets+14>
0xbb94e9e6 <+14>: pop %ebx
0xbb94e9e7 <+15>: add $0x44b0e,%ebx
0xbb94e9ed <+21>: mov 0x10(%ebp),%edi
0xbb94e9f0 <+24>: mov 0x8(%ebp),%ecx
0xbb94e9f3 <+27>: test %ecx,%ecx
0xbb94e9f5 <+29>: je 0xbb94eb45 <fgets+365>
0xbb94e9fb <+35>: test %edi,%edi
0xbb94e9fd <+37>: je 0xbb94eb74 <fgets+412>
0xbb94ea03 <+43>: movl $0x1,0x4(%esp)
0xbb94ea0b <+51>: mov %edi,(%esp)
0xbb94ea0e <+54>: call 0xbb894d6c <__flockfile_internal@plt>
=> 0xbb94ea13 <+59>: mov 0x30(%edi),%eax
0xbb94ea16 <+62>: cmp $0xfffffff8,%eax
0xbb94ea19 <+65>: je 0xbb94ea29 <fgets+81>
0xbb94ea1b <+67>: mov 0x110(%eax),%edx
0xbb94ea21 <+73>: test %edx,%edx
0xbb94ea23 <+75>: je 0xbb94eaed <fgets+277>
0xbb94ea29 <+81>: mov 0xc(%ebp),%eax
0xbb94ea2c <+84>: sub $0x1,%eax
0xbb94ea2f <+87>: mov %eax,-0x1c(%ebp)
0xbb94ea32 <+90>: mov 0x8(%ebp),%eax
0xbb94ea35 <+93>: mov %eax,-0x20(%ebp)
0xbb94ea38 <+96>: mov %edi,%edx
0xbb94ea3a <+98>: jmp 0xbb94ea9d <fgets+197>
0xbb94ea3c <+100>: mov -0x1c(%ebp),%eax
0xbb94ea3f <+103>: test %eax,%eax
0xbb94ea41 <+105>: js 0xbb94eba3 <fgets+459>
0xbb94ea47 <+111>: mov -0x1c(%ebp),%esi
0xbb94ea4a <+114>: mov %esi,0x8(%esp)
0xbb94ea4e <+118>: movl $0xa,0x4(%esp)
0xbb94ea56 <+126>: mov %ecx,(%esp)
0xbb94ea59 <+129>: mov %edx,-0x24(%ebp)
0xbb94ea5c <+132>: mov %ecx,-0x28(%ebp)
0xbb94ea5f <+135>: call 0xbb89732c <memchr@plt>
0xbb94ea64 <+140>: test %eax,%eax
0xbb94ea66 <+142>: mov -0x24(%ebp),%edx
0xbb94ea69 <+145>: mov -0x28(%ebp),%ecx
0xbb94ea6c <+148>: jne 0xbb94eafc <fgets+292>
0xbb94ea72 <+154>: sub %esi,%edi
0xbb94ea74 <+156>: mov %edi,0x4(%edx)
---Type <return> to continue, or q <return> to quit---
0xbb94ea77 <+159>: lea (%ecx,%esi,1),%eax
0xbb94ea7a <+162>: mov %eax,(%edx)
0xbb94ea7c <+164>: mov %esi,0x8(%esp)
0xbb94ea80 <+168>: mov %ecx,0x4(%esp)
0xbb94ea84 <+172>: mov -0x20(%ebp),%eax
0xbb94ea87 <+175>: mov %eax,(%esp)
0xbb94ea8a <+178>: mov %edx,-0x24(%ebp)
0xbb94ea8d <+181>: call 0xbb89473c <memcpy@plt>
0xbb94ea92 <+186>: add %esi,-0x20(%ebp)
0xbb94ea95 <+189>: sub %esi,-0x1c(%ebp)
0xbb94ea98 <+192>: mov -0x24(%ebp),%edx
0xbb94ea9b <+195>: je 0xbb94eaaf <fgets+215>
0xbb94ea9d <+197>: mov 0x4(%edx),%edi
0xbb94eaa0 <+200>: test %edi,%edi
0xbb94eaa2 <+202>: jle 0xbb94ead2 <fgets+250>
0xbb94eaa4 <+204>: mov (%edx),%ecx
0xbb94eaa6 <+206>: cmp %edi,-0x1c(%ebp)
0xbb94eaa9 <+209>: jl 0xbb94ea3c <fgets+100>
0xbb94eaab <+211>: mov %edi,%esi
0xbb94eaad <+213>: jmp 0xbb94ea4a <fgets+114>
0xbb94eaaf <+215>: mov %edx,%edi
0xbb94eab1 <+217>: mov -0x20(%ebp),%eax
0xbb94eab4 <+220>: movb $0x0,(%eax)
0xbb94eab7 <+223>: movl $0x1,0x4(%esp)
0xbb94eabf <+231>: mov %edi,(%esp)
0xbb94eac2 <+234>: call 0xbb8960bc <__funlockfile_internal@plt>
0xbb94eac7 <+239>: mov 0x8(%ebp),%eax
0xbb94eaca <+242>: add $0x2c,%esp
0xbb94eacd <+245>: pop %ebx
0xbb94eace <+246>: pop %esi
0xbb94eacf <+247>: pop %edi
0xbb94ead0 <+248>: pop %ebp
0xbb94ead1 <+249>: ret
0xbb94ead2 <+250>: mov %edx,(%esp)
0xbb94ead5 <+253>: mov %edx,-0x24(%ebp)
0xbb94ead8 <+256>: call 0xbb89410c <__srefill@plt>
0xbb94eadd <+261>: test %eax,%eax
0xbb94eadf <+263>: mov -0x24(%ebp),%edx
0xbb94eae2 <+266>: jne 0xbb94ebd1 <fgets+505>
0xbb94eae8 <+272>: mov 0x4(%edx),%edi
0xbb94eaeb <+275>: jmp 0xbb94eaa4 <fgets+204>
0xbb94eaed <+277>: movl $0xffffffff,0x110(%eax)
0xbb94eaf7 <+287>: jmp 0xbb94ea29 <fgets+81>
0xbb94eafc <+292>: mov %edx,%esi
0xbb94eafe <+294>: mov %edi,%edx
0xbb94eb00 <+296>: mov %esi,%edi
0xbb94eb02 <+298>: add $0x1,%eax
0xbb94eb05 <+301>: mov %eax,%esi
---Type <return> to continue, or q <return> to quit---
0xbb94eb07 <+303>: sub %ecx,%esi
0xbb94eb09 <+305>: sub %esi,%edx
0xbb94eb0b <+307>: mov %edx,0x4(%edi)
0xbb94eb0e <+310>: mov %eax,(%edi)
0xbb94eb10 <+312>: mov %esi,0x8(%esp)
0xbb94eb14 <+316>: mov %ecx,0x4(%esp)
0xbb94eb18 <+320>: mov -0x20(%ebp),%eax
0xbb94eb1b <+323>: mov %eax,(%esp)
0xbb94eb1e <+326>: call 0xbb89473c <memcpy@plt>
0xbb94eb23 <+331>: mov -0x20(%ebp),%eax
0xbb94eb26 <+334>: movb $0x0,(%eax,%esi,1)
0xbb94eb2a <+338>: movl $0x1,0x4(%esp)
0xbb94eb32 <+346>: mov %edi,(%esp)
0xbb94eb35 <+349>: call 0xbb8960bc <__funlockfile_internal@plt>
0xbb94eb3a <+354>: mov 0x8(%ebp),%eax
0xbb94eb3d <+357>: add $0x2c,%esp
0xbb94eb40 <+360>: pop %ebx
0xbb94eb41 <+361>: pop %esi
0xbb94eb42 <+362>: pop %edi
0xbb94eb43 <+363>: pop %ebp
0xbb94eb44 <+364>: ret
0xbb94eb45 <+365>: lea -0x1730a(%ebx),%eax
0xbb94eb4b <+371>: mov %eax,0xc(%esp)
0xbb94eb4f <+375>: lea -0x97c4(%ebx),%eax
0xbb94eb55 <+381>: mov %eax,0x8(%esp)
0xbb94eb59 <+385>: movl $0x42,0x4(%esp)
0xbb94eb61 <+393>: lea -0x97e4(%ebx),%eax
0xbb94eb67 <+399>: mov %eax,(%esp)
0xbb94eb6a <+402>: call 0xbb8957ec <__diagassert13@plt>
0xbb94eb6f <+407>: jmp 0xbb94e9fb <fgets+35>
0xbb94eb74 <+412>: lea -0x9927(%ebx),%eax
0xbb94eb7a <+418>: mov %eax,0xc(%esp)
0xbb94eb7e <+422>: lea -0x97c4(%ebx),%eax
0xbb94eb84 <+428>: mov %eax,0x8(%esp)
0xbb94eb88 <+432>: movl $0x43,0x4(%esp)
0xbb94eb90 <+440>: lea -0x97e4(%ebx),%eax
0xbb94eb96 <+446>: mov %eax,(%esp)
0xbb94eb99 <+449>: call 0xbb8957ec <__diagassert13@plt>
0xbb94eb9e <+454>: jmp 0xbb94ea03 <fgets+43>
0xbb94eba3 <+459>: mov %edx,%edi
0xbb94eba5 <+461>: call 0xbb8978bc <__errno@plt>
0xbb94ebaa <+466>: movl $0x16,(%eax)
0xbb94ebb0 <+472>: orw $0x40,0xc(%edi)
0xbb94ebb5 <+477>: movl $0x1,0x4(%esp)
0xbb94ebbd <+485>: mov %edi,(%esp)
0xbb94ebc0 <+488>: call 0xbb8960bc <__funlockfile_internal@plt>
0xbb94ebc5 <+493>: movl $0x0,0x8(%ebp)
0xbb94ebcc <+500>: jmp 0xbb94eac7 <fgets+239>
---Type <return> to continue, or q <return> to quit---
0xbb94ebd1 <+505>: mov %edx,%edi
0xbb94ebd3 <+507>: mov -0x20(%ebp),%eax
0xbb94ebd6 <+510>: cmp %eax,0x8(%ebp)
0xbb94ebd9 <+513>: jne 0xbb94eab1 <fgets+217>
0xbb94ebdf <+519>: jmp 0xbb94ebb5 <fgets+477>
End of assembler dump.
(gdb) f 2
#2 0xbb94a9c8 in __fgets_chk () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efdf7c 0xb9efdf7c
ebp 0xb9efdf94 0xb9efdf94
esi 0x0 0
edi 0xbb97cf9c -1147678820
eip 0xbb94a9c8 0xbb94a9c8 <__fgets_chk+64>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function __fgets_chk:
0xbb94a988 <+0>: push %ebp
0xbb94a989 <+1>: mov %esp,%ebp
0xbb94a98b <+3>: push %esi
0xbb94a98c <+4>: push %ebx
0xbb94a98d <+5>: sub $0x10,%esp
0xbb94a990 <+8>: call 0xbb94a995 <__fgets_chk+13>
0xbb94a995 <+13>: pop %ebx
0xbb94a996 <+14>: add $0x48b5f,%ebx
0xbb94a99c <+20>: mov 0x8(%ebp),%ecx
0xbb94a99f <+23>: mov 0xc(%ebp),%eax
0xbb94a9a2 <+26>: mov 0x10(%ebp),%edx
0xbb94a9a5 <+29>: mov 0x14(%ebp),%esi
0xbb94a9a8 <+32>: cmp $0x7ffffffe,%edx
0xbb94a9ae <+38>: ja 0xbb94a9b8 <__fgets_chk+48>
0xbb94a9b0 <+40>: test %eax,%eax
0xbb94a9b2 <+42>: js 0xbb94a9b8 <__fgets_chk+48>
0xbb94a9b4 <+44>: cmp %eax,%edx
0xbb94a9b6 <+46>: jb 0xbb94a9cf <__fgets_chk+71>
0xbb94a9b8 <+48>: mov %esi,0x8(%esp)
0xbb94a9bc <+52>: mov %eax,0x4(%esp)
0xbb94a9c0 <+56>: mov %ecx,(%esp)
0xbb94a9c3 <+59>: call 0xbb89636c <fgets@plt>
=> 0xbb94a9c8 <+64>: add $0x10,%esp
0xbb94a9cb <+67>: pop %ebx
0xbb94a9cc <+68>: pop %esi
0xbb94a9cd <+69>: pop %ebp
0xbb94a9ce <+70>: ret
0xbb94a9cf <+71>: call 0xbb8977fc <__chk_fail@plt>
End of assembler dump.
(gdb) f 3
#3 0xbb940c52 in _gethtent () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efdf9c 0xb9efdf9c
ebp 0xb9efdfe4 0xb9efdfe4
esi 0xbb9a0de0 -1147531808
edi 0xbb97cf9c -1147678820
eip 0xbb940c52 0xbb940c52 <_gethtent+109>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas [1/4884]
Dump of assembler code for function _gethtent:
0xbb940be5 <+0>: push %ebp
0xbb940be6 <+1>: mov %esp,%ebp
0xbb940be8 <+3>: push %edi
0xbb940be9 <+4>: push %esi
0xbb940bea <+5>: push %ebx
0xbb940beb <+6>: sub $0x3c,%esp
0xbb940bee <+9>: call 0xbb940bf3 <_gethtent+14>
0xbb940bf3 <+14>: pop %ebx
0xbb940bf4 <+15>: add $0x52901,%ebx
0xbb940bfa <+21>: mov 0xf8f0(%ebx),%eax
0xbb940c00 <+27>: test %eax,%eax
0xbb940c02 <+29>: je 0xbb940e49 <_gethtent+612>
0xbb940c08 <+35>: lea 0xd8ec(%ebx),%esi
0xbb940c0e <+41>: lea -0x16558(%ebx),%edi
0xbb940c14 <+47>: lea -0x16555(%ebx),%edx
0xbb940c1a <+53>: mov %edx,-0x1c(%ebp)
0xbb940c1d <+56>: lea 0xd8d8(%ebx),%edx
0xbb940c23 <+62>: mov %edx,-0x20(%ebp)
0xbb940c26 <+65>: jmp 0xbb940c36 <_gethtent+81>
0xbb940c28 <+67>: cmp %eax,%ecx
0xbb940c2a <+69>: je 0xbb940cd7 <_gethtent+242>
0xbb940c30 <+75>: mov 0xf8f0(%ebx),%eax
0xbb940c36 <+81>: mov %eax,0xc(%esp)
0xbb940c3a <+85>: movl $0x2000,0x8(%esp)
0xbb940c42 <+93>: movl $0x2000,0x4(%esp)
0xbb940c4a <+101>: mov %esi,(%esp)
0xbb940c4d <+104>: call 0xbb89671c <__fgets_chk@plt>
=> 0xbb940c52 <+109>: test %eax,%eax
0xbb940c54 <+111>: je 0xbb940e15 <_gethtent+560>
0xbb940c5a <+117>: cmpb $0x23,(%eax)
0xbb940c5d <+120>: je 0xbb940c30 <_gethtent+75>
0xbb940c5f <+122>: mov %edi,0x4(%esp)
0xbb940c63 <+126>: mov %eax,(%esp)
0xbb940c66 <+129>: mov %eax,-0x2c(%ebp)
0xbb940c69 <+132>: call 0xbb897b4c <strpbrk@plt>
0xbb940c6e <+137>: test %eax,%eax
0xbb940c70 <+139>: mov -0x2c(%ebp),%edx
0xbb940c73 <+142>: je 0xbb940c30 <_gethtent+75>
0xbb940c75 <+144>: movb $0x0,(%eax)
0xbb940c78 <+147>: mov -0x1c(%ebp),%eax
0xbb940c7b <+150>: mov %eax,0x4(%esp)
0xbb940c7f <+154>: mov %edx,(%esp)
0xbb940c82 <+157>: mov %edx,-0x2c(%ebp)
0xbb940c85 <+160>: call 0xbb897b4c <strpbrk@plt>
0xbb940c8a <+165>: test %eax,%eax
0xbb940c8c <+167>: mov -0x2c(%ebp),%edx
0xbb940c8f <+170>: je 0xbb940c30 <_gethtent+75>
---Type <return> to continue, or q <return> to quit---
0xbb940c91 <+172>: movb $0x0,(%eax)
0xbb940c94 <+175>: add $0x1,%eax
0xbb940c97 <+178>: mov %eax,-0x24(%ebp)
0xbb940c9a <+181>: mov -0x20(%ebp),%eax
0xbb940c9d <+184>: mov %eax,0x8(%esp)
0xbb940ca1 <+188>: mov %edx,0x4(%esp)
0xbb940ca5 <+192>: movl $0x18,(%esp)
0xbb940cac <+199>: mov %edx,-0x2c(%ebp)
0xbb940caf <+202>: call 0xbb897e1c <_inet_pton@plt>
0xbb940cb4 <+207>: test %eax,%eax
0xbb940cb6 <+209>: mov -0x2c(%ebp),%edx
0xbb940cb9 <+212>: jle 0xbb940db6 <_gethtent+465>
0xbb940cbf <+218>: mov $0x10,%edx
0xbb940cc4 <+223>: mov $0x18,%ecx
0xbb940cc9 <+228>: mov 0xd4c0(%ebx),%eax
0xbb940ccf <+234>: test %eax,%eax
0xbb940cd1 <+236>: jne 0xbb940c28 <_gethtent+67>
0xbb940cd7 <+242>: mov 0xd4c4(%ebx),%eax
0xbb940cdd <+248>: test %eax,%eax
0xbb940cdf <+250>: je 0xbb940ce9 <_gethtent+260>
0xbb940ce1 <+252>: cmp %eax,%edx
0xbb940ce3 <+254>: jne 0xbb940c30 <_gethtent+75>
0xbb940ce9 <+260>: mov -0x20(%ebp),%eax
0xbb940cec <+263>: mov %eax,0xd4cc(%ebx)
0xbb940cf2 <+269>: movl $0x0,0xd4d0(%ebx)
0xbb940cfc <+279>: lea 0xd4cc(%ebx),%eax
0xbb940d02 <+285>: mov %eax,0xd4c8(%ebx)
0xbb940d08 <+291>: mov %edx,0xd4c4(%ebx)
0xbb940d0e <+297>: mov %ecx,0xd4c0(%ebx)
0xbb940d14 <+303>: mov -0x24(%ebp),%eax
0xbb940d17 <+306>: jmp 0xbb940d1c <_gethtent+311>
0xbb940d19 <+308>: add $0x1,%eax
0xbb940d1c <+311>: movzbl (%eax),%edx
0xbb940d1f <+314>: cmp $0x20,%dl
0xbb940d22 <+317>: je 0xbb940d19 <_gethtent+308>
0xbb940d24 <+319>: cmp $0x9,%dl
0xbb940d27 <+322>: je 0xbb940d19 <_gethtent+308>
0xbb940d29 <+324>: mov %eax,0xd4b8(%ebx)
0xbb940d2f <+330>: lea 0xd56c(%ebx),%esi
0xbb940d35 <+336>: mov %esi,0xd4bc(%ebx)
0xbb940d3b <+342>: mov -0x1c(%ebp),%edx
0xbb940d3e <+345>: mov %edx,0x4(%esp)
0xbb940d42 <+349>: mov %eax,(%esp)
0xbb940d45 <+352>: call 0xbb897b4c <strpbrk@plt>
0xbb940d4a <+357>: test %eax,%eax
0xbb940d4c <+359>: je 0xbb940e2a <_gethtent+581>
0xbb940d52 <+365>: movb $0x0,(%eax)
0xbb940d55 <+368>: mov %eax,%edx
---Type <return> to continue, or q <return> to quit---
0xbb940d57 <+370>: add $0x1,%edx
0xbb940d5a <+373>: je 0xbb940e2a <_gethtent+581>
0xbb940d60 <+379>: movzbl 0x1(%eax),%eax
0xbb940d64 <+383>: test %al,%al
0xbb940d66 <+385>: je 0xbb940e2a <_gethtent+581>
0xbb940d6c <+391>: lea 0xd5f4(%ebx),%edi
0xbb940d72 <+397>: jmp 0xbb940dad <_gethtent+456>
0xbb940d74 <+399>: cmp $0x9,%al
0xbb940d76 <+401>: je 0xbb940db1 <_gethtent+460>
0xbb940d78 <+403>: cmp %edi,%esi
0xbb940d7a <+405>: jae 0xbb940d81 <_gethtent+412>
0xbb940d7c <+407>: mov %edx,(%esi)
0xbb940d7e <+409>: add $0x4,%esi
0xbb940d81 <+412>: mov -0x1c(%ebp),%eax
0xbb940d84 <+415>: mov %eax,0x4(%esp)
0xbb940d88 <+419>: mov %edx,(%esp)
0xbb940d8b <+422>: call 0xbb897b4c <strpbrk@plt>
0xbb940d90 <+427>: test %eax,%eax
0xbb940d92 <+429>: je 0xbb940e2a <_gethtent+581>
0xbb940d98 <+435>: movb $0x0,(%eax)
0xbb940d9b <+438>: lea 0x1(%eax),%edx
0xbb940d9e <+441>: test %edx,%edx
0xbb940da0 <+443>: je 0xbb940e2a <_gethtent+581>
0xbb940da6 <+449>: movzbl (%edx),%eax
0xbb940da9 <+452>: test %al,%al
0xbb940dab <+454>: je 0xbb940e2a <_gethtent+581>
0xbb940dad <+456>: cmp $0x20,%al
0xbb940daf <+458>: jne 0xbb940d74 <_gethtent+399>
0xbb940db1 <+460>: add $0x1,%edx
0xbb940db4 <+463>: jmp 0xbb940d9e <_gethtent+441>
0xbb940db6 <+465>: mov -0x20(%ebp),%eax
0xbb940db9 <+468>: mov %eax,0x8(%esp)
0xbb940dbd <+472>: mov %edx,0x4(%esp)
0xbb940dc1 <+476>: movl $0x2,(%esp)
0xbb940dc8 <+483>: call 0xbb897e1c <_inet_pton@plt>
0xbb940dcd <+488>: test %eax,%eax
0xbb940dcf <+490>: jle 0xbb940c30 <_gethtent+75>
0xbb940dd5 <+496>: call 0xbb89525c <__res_get_state@plt>
0xbb940dda <+501>: mov %eax,-0x28(%ebp)
0xbb940ddd <+504>: test %eax,%eax
0xbb940ddf <+506>: je 0xbb940e97 <_gethtent+690>
0xbb940de5 <+512>: testb $0x20,0x9(%eax)
0xbb940de9 <+516>: jne 0xbb940e7e <_gethtent+665>
0xbb940def <+522>: mov $0x4,%edx
0xbb940df4 <+527>: mov $0x2,%ecx
0xbb940df9 <+532>: mov -0x28(%ebp),%eax
0xbb940dfc <+535>: mov %eax,(%esp)
0xbb940dff <+538>: mov %edx,-0x2c(%ebp)
---Type <return> to continue, or q <return> to quit---
0xbb940e02 <+541>: mov %ecx,-0x30(%ebp)
0xbb940e05 <+544>: call 0xbb8947ac <__res_put_state@plt>
0xbb940e0a <+549>: mov -0x2c(%ebp),%edx
0xbb940e0d <+552>: mov -0x30(%ebp),%ecx
0xbb940e10 <+555>: jmp 0xbb940cc9 <_gethtent+228>
0xbb940e15 <+560>: call 0xbb896b0c <__h_errno@plt>
0xbb940e1a <+565>: movl $0x1,(%eax)
0xbb940e20 <+571>: xor %eax,%eax
0xbb940e22 <+573>: add $0x3c,%esp
0xbb940e25 <+576>: pop %ebx
0xbb940e26 <+577>: pop %esi
0xbb940e27 <+578>: pop %edi
0xbb940e28 <+579>: pop %ebp
0xbb940e29 <+580>: ret
0xbb940e2a <+581>: movl $0x0,(%esi)
0xbb940e30 <+587>: call 0xbb896b0c <__h_errno@plt>
0xbb940e35 <+592>: movl $0x0,(%eax)
0xbb940e3b <+598>: lea 0xd4b8(%ebx),%eax
0xbb940e41 <+604>: add $0x3c,%esp
0xbb940e44 <+607>: pop %ebx
0xbb940e45 <+608>: pop %esi
0xbb940e46 <+609>: pop %edi
0xbb940e47 <+610>: pop %ebp
0xbb940e48 <+611>: ret
0xbb940e49 <+612>: lea -0x15dc2(%ebx),%eax
0xbb940e4f <+618>: mov %eax,0x4(%esp)
0xbb940e53 <+622>: lea -0xaccd(%ebx),%eax
0xbb940e59 <+628>: mov %eax,(%esp)
0xbb940e5c <+631>: call 0xbb895b5c <fopen@plt>
0xbb940e61 <+636>: mov %eax,0xf8f0(%ebx)
0xbb940e67 <+642>: test %eax,%eax
0xbb940e69 <+644>: jne 0xbb940c08 <_gethtent+35>
0xbb940e6f <+650>: call 0xbb896b0c <__h_errno@plt>
0xbb940e74 <+655>: movl $0xffffffff,(%eax)
0xbb940e7a <+661>: xor %eax,%eax
0xbb940e7c <+663>: jmp 0xbb940e22 <_gethtent+573>
0xbb940e7e <+665>: mov -0x20(%ebp),%edx
0xbb940e81 <+668>: mov %edx,%eax
0xbb940e83 <+670>: call 0xbb93f240
0xbb940e88 <+675>: mov $0x10,%edx
0xbb940e8d <+680>: mov $0x18,%ecx
0xbb940e92 <+685>: jmp 0xbb940df9 <_gethtent+532>
0xbb940e97 <+690>: xor %eax,%eax
0xbb940e99 <+692>: jmp 0xbb940e22 <_gethtent+573>
End of assembler dump.
(gdb) f 4
#4 0xbb940eee in _gethtbyaddr () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efdfec 0xb9efdfec
ebp 0xb9efe024 0xb9efe024
esi 0x2 2
edi 0xbb6d6df8 -1150456328
eip 0xbb940eee 0xbb940eee <_gethtbyaddr+83>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function _gethtbyaddr:
0xbb940e9b <+0>: push %ebp
0xbb940e9c <+1>: mov %esp,%ebp
0xbb940e9e <+3>: push %edi
0xbb940e9f <+4>: push %esi
0xbb940ea0 <+5>: push %ebx
0xbb940ea1 <+6>: sub $0x2c,%esp
0xbb940ea4 <+9>: call 0xbb940ea9 <_gethtbyaddr+14>
0xbb940ea9 <+14>: pop %ebx
0xbb940eaa <+15>: add $0x5264b,%ebx
0xbb940eb0 <+21>: mov 0x10(%ebp),%esi
0xbb940eb3 <+24>: mov 0x8(%ebp),%ecx
0xbb940eb6 <+27>: test %ecx,%ecx
0xbb940eb8 <+29>: je 0xbb940f50 <_gethtbyaddr+181>
0xbb940ebe <+35>: mov (%esi),%eax
0xbb940ec0 <+37>: mov %eax,-0x24(%ebp)
0xbb940ec3 <+40>: mov 0x4(%esi),%edx
0xbb940ec6 <+43>: mov %edx,-0x20(%ebp)
0xbb940ec9 <+46>: mov 0x8(%esi),%esi
0xbb940ecc <+49>: mov %esi,-0x1c(%ebp)
0xbb940ecf <+52>: mov %edx,0xd4c4(%ebx)
0xbb940ed5 <+58>: mov %esi,0xd4c0(%ebx)
0xbb940edb <+64>: mov 0xf8ec(%ebx),%eax
0xbb940ee1 <+70>: mov %eax,(%esp)
0xbb940ee4 <+73>: call 0xbb8975ec <_sethtent@plt>
0xbb940ee9 <+78>: call 0xbb895c4c <_gethtent@plt>
=> 0xbb940eee <+83>: test %eax,%eax
0xbb940ef0 <+85>: je 0xbb940f2a <_gethtbyaddr+143>
0xbb940ef2 <+87>: mov -0x1c(%ebp),%edx
0xbb940ef5 <+90>: cmp %edx,0x8(%eax)
0xbb940ef8 <+93>: jne 0xbb940ee9 <_gethtbyaddr+78>
0xbb940efa <+95>: mov 0x10(%eax),%edx
0xbb940efd <+98>: mov (%edx),%esi
0xbb940eff <+100>: mov -0x20(%ebp),%edx
0xbb940f02 <+103>: cmp %edx,%edx
0xbb940f04 <+105>: mov -0x24(%ebp),%edi
0xbb940f07 <+108>: mov %edx,%ecx
0xbb940f09 <+110>: repz cmpsb %es:(%edi),%ds:(%esi)
0xbb940f0b <+112>: jne 0xbb940ee9 <_gethtbyaddr+78>
0xbb940f0d <+114>: mov %eax,-0x28(%ebp)
0xbb940f10 <+117>: call 0xbb89736c <_endhtent@plt>
0xbb940f15 <+122>: mov -0x28(%ebp),%eax
0xbb940f18 <+125>: mov 0x8(%ebp),%edx
0xbb940f1b <+128>: mov %eax,(%edx)
0xbb940f1d <+130>: mov $0x1,%eax
0xbb940f22 <+135>: add $0x2c,%esp
0xbb940f25 <+138>: pop %ebx
0xbb940f26 <+139>: pop %esi
---Type <return> to continue, or q <return> to quit---
0xbb940f27 <+140>: pop %edi
0xbb940f28 <+141>: pop %ebp
0xbb940f29 <+142>: ret
0xbb940f2a <+143>: call 0xbb89736c <_endhtent@plt>
0xbb940f2f <+148>: mov 0x8(%ebp),%eax
0xbb940f32 <+151>: movl $0x0,(%eax)
0xbb940f38 <+157>: call 0xbb896b0c <__h_errno@plt>
0xbb940f3d <+162>: movl $0x1,(%eax)
0xbb940f43 <+168>: mov $0x4,%eax
0xbb940f48 <+173>: add $0x2c,%esp
0xbb940f4b <+176>: pop %ebx
0xbb940f4c <+177>: pop %esi
0xbb940f4d <+178>: pop %edi
0xbb940f4e <+179>: pop %ebp
0xbb940f4f <+180>: ret
0xbb940f50 <+181>: lea -0xfb5b(%ebx),%eax
0xbb940f56 <+187>: mov %eax,0xc(%esp)
0xbb940f5a <+191>: lea -0xab68(%ebx),%eax
0xbb940f60 <+197>: mov %eax,0x8(%esp)
0xbb940f64 <+201>: movl $0x3b3,0x4(%esp)
0xbb940f6c <+209>: lea -0xac88(%ebx),%eax
0xbb940f72 <+215>: mov %eax,(%esp)
0xbb940f75 <+218>: call 0xbb8957ec <__diagassert13@plt>
0xbb940f7a <+223>: jmp 0xbb940ebe <_gethtbyaddr+35>
End of assembler dump.
(gdb) f 5
#5 0xbb95cd68 in nsdispatch () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efe02c 0xb9efe02c
ebp 0xb9efe0d4 0xb9efe0d4
esi 0xbb99212c -1147592404
edi 0xbb6d6df8 -1150456328
eip 0xbb95cd68 0xbb95cd68 <nsdispatch+377>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function nsdispatch:
0xbb95cbef <+0>: push %ebp
0xbb95cbf0 <+1>: mov %esp,%ebp
0xbb95cbf2 <+3>: push %edi
0xbb95cbf3 <+4>: push %esi
0xbb95cbf4 <+5>: push %ebx
0xbb95cbf5 <+6>: sub $0x9c,%esp
0xbb95cbfb <+12>: call 0xbb95cc00 <nsdispatch+17>
0xbb95cc00 <+17>: pop %ebx
0xbb95cc01 <+18>: add $0x368f4,%ebx
0xbb95cc07 <+24>: mov 0x10(%ebp),%eax
0xbb95cc0a <+27>: test %eax,%eax
0xbb95cc0c <+29>: je 0xbb95cfb6 <nsdispatch+967>
0xbb95cc12 <+35>: mov 0x14(%ebp),%edi
0xbb95cc15 <+38>: test %edi,%edi
0xbb95cc17 <+40>: je 0xbb95cfe5 <nsdispatch+1014>
0xbb95cc1d <+46>: mov 0x18(%ebp),%esi
0xbb95cc20 <+49>: test %esi,%esi
0xbb95cc22 <+51>: je 0xbb95cf87 <nsdispatch+920>
0xbb95cc28 <+57>: mov 0x10(%ebp),%ecx
0xbb95cc2b <+60>: test %ecx,%ecx
0xbb95cc2d <+62>: je 0xbb95ce50 <nsdispatch+609>
0xbb95cc33 <+68>: mov 0x14(%ebp),%edx
0xbb95cc36 <+71>: test %edx,%edx
0xbb95cc38 <+73>: je 0xbb95ce50 <nsdispatch+609>
0xbb95cc3e <+79>: mov 0x18(%ebp),%eax
0xbb95cc41 <+82>: test %eax,%eax
0xbb95cc43 <+84>: je 0xbb95ce50 <nsdispatch+609>
0xbb95cc49 <+90>: mov -0x1dc(%ebx),%eax
0xbb95cc4f <+96>: mov (%eax),%edi
0xbb95cc51 <+98>: test %edi,%edi
0xbb95cc53 <+100>: jne 0xbb95ce62 <nsdispatch+627>
0xbb95cc59 <+106>: mov 0x10a50(%ebx),%eax
0xbb95cc5f <+112>: lea 0x1(%eax),%edx
0xbb95cc62 <+115>: mov %edx,0x10a50(%ebx)
0xbb95cc68 <+121>: test %eax,%eax
0xbb95cc6a <+123>: je 0xbb95cf30 <nsdispatch+833>
0xbb95cc70 <+129>: lea 0x302c(%ebx),%edx
0xbb95cc76 <+135>: mov %edx,-0x7c(%ebp)
0xbb95cc79 <+138>: mov %edx,(%esp)
0xbb95cc7c <+141>: call 0xbb894b4c <__libc_rwlock_rdlock@plt>
0xbb95cc81 <+146>: mov 0x10(%ebp),%ecx
0xbb95cc84 <+149>: mov %ecx,-0x30(%ebp)
0xbb95cc87 <+152>: lea -0x36fd6(%ebx),%eax
0xbb95cc8d <+158>: mov %eax,0x10(%esp)
0xbb95cc91 <+162>: movl $0xc,0xc(%esp)
0xbb95cc99 <+170>: mov 0x10a48(%ebx),%eax
0xbb95cc9f <+176>: mov %eax,0x8(%esp)
---Type <return> to continue, or q <return> to quit---
0xbb95cca3 <+180>: mov 0x10a4c(%ebx),%eax
0xbb95cca9 <+186>: mov %eax,0x4(%esp)
0xbb95ccad <+190>: lea -0x30(%ebp),%eax
0xbb95ccb0 <+193>: mov %eax,(%esp)
0xbb95ccb3 <+196>: call 0xbb895afc <bsearch@plt>
0xbb95ccb8 <+201>: test %eax,%eax
0xbb95ccba <+203>: je 0xbb95cf56 <nsdispatch+871>
0xbb95ccc0 <+209>: mov 0x4(%eax),%edx
0xbb95ccc3 <+212>: mov %edx,-0x64(%ebp)
0xbb95ccc6 <+215>: mov 0x8(%eax),%eax
0xbb95ccc9 <+218>: mov %eax,-0x68(%ebp)
0xbb95cccc <+221>: test %eax,%eax
0xbb95ccce <+223>: jle 0xbb95d014 <nsdispatch+1061>
0xbb95ccd4 <+229>: movl $0x0,-0x60(%ebp)
0xbb95ccdb <+236>: lea 0x1c(%ebp),%eax
0xbb95ccde <+239>: mov %eax,-0x6c(%ebp)
0xbb95cce1 <+242>: lea -0x37005(%ebx),%edx
0xbb95cce7 <+248>: mov %edx,-0x70(%ebp)
0xbb95ccea <+251>: lea -0x54(%ebp),%ecx
0xbb95cced <+254>: mov %ecx,-0x74(%ebp)
0xbb95ccf0 <+257>: lea -0x36fa7(%ebx),%eax
0xbb95ccf6 <+263>: mov %eax,-0x78(%ebp)
0xbb95ccf9 <+266>: mov -0x60(%ebp),%edx
0xbb95ccfc <+269>: mov -0x64(%ebp),%ecx
0xbb95ccff <+272>: mov (%ecx,%edx,8),%edi
0xbb95cd02 <+275>: mov 0xc(%ebp),%ecx
0xbb95cd05 <+278>: test %ecx,%ecx
0xbb95cd07 <+280>: je 0xbb95cdc7 <nsdispatch+472>
0xbb95cd0d <+286>: mov 0xc(%ebp),%edx
0xbb95cd10 <+289>: mov (%edx),%eax
0xbb95cd12 <+291>: test %eax,%eax
0xbb95cd14 <+293>: je 0xbb95cdc7 <nsdispatch+472>
0xbb95cd1a <+299>: mov %edx,%esi
0xbb95cd1c <+301>: add $0xc,%esi
0xbb95cd1f <+304>: mov %edx,-0x5c(%ebp)
0xbb95cd22 <+307>: jmp 0xbb95cd34 <nsdispatch+325>
0xbb95cd24 <+309>: mov %esi,-0x5c(%ebp)
0xbb95cd27 <+312>: mov (%esi),%eax
0xbb95cd29 <+314>: add $0xc,%esi
0xbb95cd2c <+317>: test %eax,%eax
0xbb95cd2e <+319>: je 0xbb95cdc7 <nsdispatch+472>
0xbb95cd34 <+325>: mov %eax,0x4(%esp)
0xbb95cd38 <+329>: mov %edi,(%esp)
0xbb95cd3b <+332>: call 0xbb893ffc <_strcasecmp@plt>
0xbb95cd40 <+337>: test %eax,%eax
0xbb95cd42 <+339>: jne 0xbb95cd24 <nsdispatch+309>
0xbb95cd44 <+341>: mov -0x5c(%ebp),%ecx
0xbb95cd47 <+344>: mov 0x8(%ecx),%edx
---Type <return> to continue, or q <return> to quit---
0xbb95cd4a <+347>: mov 0x4(%ecx),%eax
0xbb95cd4d <+350>: test %eax,%eax
0xbb95cd4f <+352>: je 0xbb95ce49 <nsdispatch+602>
0xbb95cd55 <+358>: mov -0x6c(%ebp),%ecx
0xbb95cd58 <+361>: mov %ecx,0x8(%esp)
0xbb95cd5c <+365>: mov %edx,0x4(%esp)
0xbb95cd60 <+369>: mov 0x8(%ebp),%edx
0xbb95cd63 <+372>: mov %edx,(%esp)
0xbb95cd66 <+375>: call *%eax
=> 0xbb95cd68 <+377>: mov 0x18(%ebp),%ecx
0xbb95cd6b <+380>: testb $0x1,0x5(%ecx)
0xbb95cd6f <+384>: jne 0xbb95cd7d <nsdispatch+398>
0xbb95cd71 <+386>: mov -0x60(%ebp),%edx
0xbb95cd74 <+389>: mov -0x64(%ebp),%ecx
0xbb95cd77 <+392>: test %eax,0x4(%ecx,%edx,8)
0xbb95cd7b <+396>: jne 0xbb95cd8d <nsdispatch+414>
0xbb95cd7d <+398>: addl $0x1,-0x60(%ebp)
0xbb95cd81 <+402>: mov -0x68(%ebp),%edx
0xbb95cd84 <+405>: cmp %edx,-0x60(%ebp)
0xbb95cd87 <+408>: jl 0xbb95ccf9 <nsdispatch+266>
0xbb95cd8d <+414>: movzbl %al,%esi
0xbb95cd90 <+417>: mov -0x7c(%ebp),%ecx
0xbb95cd93 <+420>: mov %ecx,(%esp)
0xbb95cd96 <+423>: call 0xbb897d1c <__libc_rwlock_unlock@plt>
0xbb95cd9b <+428>: mov -0x1dc(%ebx),%eax
0xbb95cda1 <+434>: mov (%eax),%eax
0xbb95cda3 <+436>: test %eax,%eax
0xbb95cda5 <+438>: jne 0xbb95cf03 <nsdispatch+788>
0xbb95cdab <+444>: subl $0x1,0x10a50(%ebx)
0xbb95cdb2 <+451>: test %esi,%esi
0xbb95cdb4 <+453>: jne 0xbb95cdba <nsdispatch+459>
0xbb95cdb6 <+455>: mov $0x4,%si
0xbb95cdba <+459>: mov %esi,%eax
0xbb95cdbc <+461>: add $0x9c,%esp
0xbb95cdc2 <+467>: pop %ebx
0xbb95cdc3 <+468>: pop %esi
0xbb95cdc4 <+469>: pop %edi
0xbb95cdc5 <+470>: pop %ebp
0xbb95cdc6 <+471>: ret
0xbb95cdc7 <+472>: mov %edi,-0x54(%ebp)
0xbb95cdca <+475>: mov -0x70(%ebp),%eax
0xbb95cdcd <+478>: mov %eax,0x10(%esp)
0xbb95cdd1 <+482>: movl $0x14,0xc(%esp)
0xbb95cdd9 <+490>: mov 0x10a58(%ebx),%eax
0xbb95cddf <+496>: mov %eax,0x8(%esp)
0xbb95cde3 <+500>: mov 0x10a54(%ebx),%eax
0xbb95cde9 <+506>: mov %eax,0x4(%esp)
0xbb95cded <+510>: mov -0x74(%ebp),%edx
---Type <return> to continue, or q <return> to quit---
0xbb95cdf0 <+513>: mov %edx,(%esp)
0xbb95cdf3 <+516>: call 0xbb895afc <bsearch@plt>
0xbb95cdf8 <+521>: test %eax,%eax
0xbb95cdfa <+523>: je 0xbb95ce49 <nsdispatch+602>
0xbb95cdfc <+525>: mov 0x4(%eax),%edx
0xbb95cdff <+528>: test %edx,%edx
0xbb95ce01 <+530>: je 0xbb95ce49 <nsdispatch+602>
0xbb95ce03 <+532>: mov 0x10(%ebp),%ecx
0xbb95ce06 <+535>: mov %ecx,-0x40(%ebp)
0xbb95ce09 <+538>: mov 0x14(%ebp),%edx
0xbb95ce0c <+541>: mov %edx,-0x3c(%ebp)
0xbb95ce0f <+544>: mov -0x78(%ebp),%ecx
0xbb95ce12 <+547>: mov %ecx,0x10(%esp)
0xbb95ce16 <+551>: movl $0x10,0xc(%esp)
0xbb95ce1e <+559>: mov 0xc(%eax),%edx
0xbb95ce21 <+562>: mov %edx,0x8(%esp)
0xbb95ce25 <+566>: mov 0x8(%eax),%eax
0xbb95ce28 <+569>: mov %eax,0x4(%esp)
0xbb95ce2c <+573>: lea -0x40(%ebp),%eax
0xbb95ce2f <+576>: mov %eax,(%esp)
0xbb95ce32 <+579>: call 0xbb895afc <bsearch@plt>
0xbb95ce37 <+584>: test %eax,%eax
0xbb95ce39 <+586>: je 0xbb95ce49 <nsdispatch+602>
0xbb95ce3b <+588>: mov 0xc(%eax),%edx
0xbb95ce3e <+591>: mov 0x8(%eax),%eax
0xbb95ce41 <+594>: test %eax,%eax
0xbb95ce43 <+596>: jne 0xbb95cd55 <nsdispatch+358>
0xbb95ce49 <+602>: xor %eax,%eax
0xbb95ce4b <+604>: jmp 0xbb95cd7d <nsdispatch+398>
0xbb95ce50 <+609>: mov $0x2,%esi
0xbb95ce55 <+614>: mov %esi,%eax
0xbb95ce57 <+616>: add $0x9c,%esp
0xbb95ce5d <+622>: pop %ebx
0xbb95ce5e <+623>: pop %esi
0xbb95ce5f <+624>: pop %edi
0xbb95ce60 <+625>: pop %ebp
0xbb95ce61 <+626>: ret
0xbb95ce62 <+627>: call 0xbb896a8c <__libc_thr_self@plt>
0xbb95ce67 <+632>: mov %eax,-0x1c(%ebp)
0xbb95ce6a <+635>: lea 0x300c(%ebx),%edi
0xbb95ce70 <+641>: mov %edi,(%esp)
0xbb95ce73 <+644>: call 0xbb895ccc <__libc_mutex_lock@plt>
0xbb95ce78 <+649>: mov 0x10a44(%ebx),%edx
0xbb95ce7e <+655>: test %edx,%edx
0xbb95ce80 <+657>: je 0xbb95d01b <nsdispatch+1068>
0xbb95ce86 <+663>: mov -0x1c(%ebp),%eax
0xbb95ce89 <+666>: cmp %eax,0x8(%edx)
0xbb95ce8c <+669>: je 0xbb95d041 <nsdispatch+1106>
---Type <return> to continue, or q <return> to quit---
0xbb95ce92 <+675>: mov %edx,%esi
0xbb95ce94 <+677>: jmp 0xbb95ce9b <nsdispatch+684>
0xbb95ce96 <+679>: cmp %eax,0x8(%esi)
0xbb95ce99 <+682>: je 0xbb95cea2 <nsdispatch+691>
0xbb95ce9b <+684>: mov (%esi),%esi
0xbb95ce9d <+686>: test %esi,%esi
0xbb95ce9f <+688>: nop
0xbb95cea0 <+689>: jne 0xbb95ce96 <nsdispatch+679>
0xbb95cea2 <+691>: mov %edx,-0x24(%ebp)
0xbb95cea5 <+694>: lea -0x24(%ebp),%eax
0xbb95cea8 <+697>: mov %eax,0x4(%edx)
0xbb95ceab <+700>: mov %eax,0x10a44(%ebx)
0xbb95ceb1 <+706>: lea 0x10a44(%ebx),%eax
0xbb95ceb7 <+712>: mov %eax,-0x20(%ebp)
0xbb95ceba <+715>: mov %edi,(%esp)
0xbb95cebd <+718>: call 0xbb8967ac <__libc_mutex_unlock@plt>
0xbb95cec2 <+723>: test %esi,%esi
0xbb95cec4 <+725>: jne 0xbb95cc70 <nsdispatch+129>
0xbb95ceca <+731>: call 0xbb95c296
0xbb95cecf <+736>: test %eax,%eax
0xbb95ced1 <+738>: je 0xbb95cc70 <nsdispatch+129>
0xbb95ced7 <+744>: mov %edi,(%esp)
0xbb95ceda <+747>: call 0xbb895ccc <__libc_mutex_lock@plt>
0xbb95cedf <+752>: mov -0x24(%ebp),%eax
0xbb95cee2 <+755>: test %eax,%eax
0xbb95cee4 <+757>: je 0xbb95ceec <nsdispatch+765>
0xbb95cee6 <+759>: mov -0x20(%ebp),%edx
0xbb95cee9 <+762>: mov %edx,0x4(%eax)
0xbb95ceec <+765>: mov -0x20(%ebp),%edx
0xbb95ceef <+768>: mov %eax,(%edx)
0xbb95cef1 <+770>: mov %edi,(%esp)
0xbb95cef4 <+773>: call 0xbb8967ac <__libc_mutex_unlock@plt>
0xbb95cef9 <+778>: mov $0x2,%esi
0xbb95cefe <+783>: jmp 0xbb95cdba <nsdispatch+459>
0xbb95cf03 <+788>: lea 0x300c(%ebx),%edi
0xbb95cf09 <+794>: mov %edi,(%esp)
0xbb95cf0c <+797>: call 0xbb895ccc <__libc_mutex_lock@plt>
0xbb95cf11 <+802>: mov -0x24(%ebp),%eax
0xbb95cf14 <+805>: test %eax,%eax
0xbb95cf16 <+807>: je 0xbb95cf1e <nsdispatch+815>
0xbb95cf18 <+809>: mov -0x20(%ebp),%edx
0xbb95cf1b <+812>: mov %edx,0x4(%eax)
0xbb95cf1e <+815>: mov -0x20(%ebp),%edx
0xbb95cf21 <+818>: mov %eax,(%edx)
0xbb95cf23 <+820>: mov %edi,(%esp)
0xbb95cf26 <+823>: call 0xbb8967ac <__libc_mutex_unlock@plt>
0xbb95cf2b <+828>: jmp 0xbb95cdb2 <nsdispatch+451>
0xbb95cf30 <+833>: call 0xbb95c296
---Type <return> to continue, or q <return> to quit---
0xbb95cf35 <+838>: test %eax,%eax
0xbb95cf37 <+840>: je 0xbb95cc70 <nsdispatch+129>
0xbb95cf3d <+846>: subl $0x1,0x10a50(%ebx)
0xbb95cf44 <+853>: mov $0x2,%esi
0xbb95cf49 <+858>: mov %esi,%eax
0xbb95cf4b <+860>: add $0x9c,%esp
0xbb95cf51 <+866>: pop %ebx
0xbb95cf52 <+867>: pop %esi
0xbb95cf53 <+868>: pop %edi
0xbb95cf54 <+869>: pop %ebp
0xbb95cf55 <+870>: ret
0xbb95cf56 <+871>: movl $0x0,-0x68(%ebp)
0xbb95cf5d <+878>: mov 0x18(%ebp),%eax
0xbb95cf60 <+881>: cmpl $0x0,(%eax)
0xbb95cf63 <+884>: je 0xbb95d014 <nsdispatch+1061>
0xbb95cf69 <+890>: mov -0x68(%ebp),%eax
0xbb95cf6c <+893>: mov 0x18(%ebp),%edx
0xbb95cf6f <+896>: add $0x1,%eax
0xbb95cf72 <+899>: mov (%edx,%eax,8),%esi
0xbb95cf75 <+902>: test %esi,%esi
0xbb95cf77 <+904>: jne 0xbb95cf6f <nsdispatch+896>
0xbb95cf79 <+906>: mov %eax,-0x68(%ebp)
0xbb95cf7c <+909>: mov 0x18(%ebp),%ecx
0xbb95cf7f <+912>: mov %ecx,-0x64(%ebp)
0xbb95cf82 <+915>: jmp 0xbb95ccd4 <nsdispatch+229>
0xbb95cf87 <+920>: lea -0x74d3(%ebx),%eax
0xbb95cf8d <+926>: mov %eax,0xc(%esp)
0xbb95cf91 <+930>: lea -0x749d(%ebx),%eax
0xbb95cf97 <+936>: mov %eax,0x8(%esp)
0xbb95cf9b <+940>: movl $0x262,0x4(%esp)
0xbb95cfa3 <+948>: lea -0x74c0(%ebx),%eax
0xbb95cfa9 <+954>: mov %eax,(%esp)
0xbb95cfac <+957>: call 0xbb8957ec <__diagassert13@plt>
0xbb95cfb1 <+962>: jmp 0xbb95cc28 <nsdispatch+57>
0xbb95cfb6 <+967>: lea -0x74f3(%ebx),%eax
0xbb95cfbc <+973>: mov %eax,0xc(%esp)
0xbb95cfc0 <+977>: lea -0x749d(%ebx),%eax
0xbb95cfc6 <+983>: mov %eax,0x8(%esp)
0xbb95cfca <+987>: movl $0x260,0x4(%esp)
0xbb95cfd2 <+995>: lea -0x74c0(%ebx),%eax
0xbb95cfd8 <+1001>: mov %eax,(%esp)
0xbb95cfdb <+1004>: call 0xbb8957ec <__diagassert13@plt>
0xbb95cfe0 <+1009>: jmp 0xbb95cc12 <nsdispatch+35>
0xbb95cfe5 <+1014>: lea -0x74e2(%ebx),%eax
0xbb95cfeb <+1020>: mov %eax,0xc(%esp)
0xbb95cfef <+1024>: lea -0x749d(%ebx),%eax
0xbb95cff5 <+1030>: mov %eax,0x8(%esp)
0xbb95cff9 <+1034>: movl $0x261,0x4(%esp)
---Type <return> to continue, or q <return> to quit---
0xbb95d001 <+1042>: lea -0x74c0(%ebx),%eax
0xbb95d007 <+1048>: mov %eax,(%esp)
0xbb95d00a <+1051>: call 0xbb8957ec <__diagassert13@plt>
0xbb95d00f <+1056>: jmp 0xbb95cc1d <nsdispatch+46>
0xbb95d014 <+1061>: xor %eax,%eax
0xbb95d016 <+1063>: jmp 0xbb95cd8d <nsdispatch+414>
0xbb95d01b <+1068>: movl $0x0,-0x24(%ebp)
0xbb95d022 <+1075>: lea -0x24(%ebp),%eax
0xbb95d025 <+1078>: mov %eax,0x10a44(%ebx)
0xbb95d02b <+1084>: lea 0x10a44(%ebx),%eax
0xbb95d031 <+1090>: mov %eax,-0x20(%ebp)
0xbb95d034 <+1093>: mov %edi,(%esp)
0xbb95d037 <+1096>: call 0xbb8967ac <__libc_mutex_unlock@plt>
0xbb95d03c <+1101>: jmp 0xbb95ceca <nsdispatch+731>
0xbb95d041 <+1106>: mov %edx,%esi
0xbb95d043 <+1108>: jmp 0xbb95cea2 <nsdispatch+691>
End of assembler dump.
(gdb) f 6
#6 0xbb940ab8 in gethostbyaddr () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efe0dc 0xb9efe0dc
ebp 0xb9efe134 0xb9efe134
esi 0x2 2
edi 0x4 4
eip 0xbb940ab8 0xbb940ab8 <gethostbyaddr+298>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function gethostbyaddr:
0xbb94098e <+0>: push %ebp
0xbb94098f <+1>: mov %esp,%ebp
0xbb940991 <+3>: push %edi
0xbb940992 <+4>: push %esi
0xbb940993 <+5>: push %ebx
0xbb940994 <+6>: sub $0x4c,%esp
0xbb940997 <+9>: call 0xbb94099c <gethostbyaddr+14>
0xbb94099c <+14>: pop %ebx
0xbb94099d <+15>: add $0x52b58,%ebx
0xbb9409a3 <+21>: mov 0x8(%ebp),%edi
0xbb9409a6 <+24>: mov 0xc(%ebp),%eax
0xbb9409a9 <+27>: mov 0x10(%ebp),%esi
0xbb9409ac <+30>: mov %edi,%edx
0xbb9409ae <+32>: test %edi,%edi
0xbb9409b0 <+34>: je 0xbb940ac7 <gethostbyaddr+313>
0xbb9409b6 <+40>: cmp $0x18,%esi
0xbb9409b9 <+43>: je 0xbb9409e9 <gethostbyaddr+91>
0xbb9409bb <+45>: cmp $0x2,%esi
0xbb9409be <+48>: je 0xbb940a53 <gethostbyaddr+197>
0xbb9409c4 <+54>: cmp $0x18,%esi
0xbb9409c7 <+57>: je 0xbb9409ee <gethostbyaddr+96>
0xbb9409c9 <+59>: call 0xbb8978bc <__errno@plt>
0xbb9409ce <+64>: movl $0x2f,(%eax)
0xbb9409d4 <+70>: call 0xbb896b0c <__h_errno@plt>
0xbb9409d9 <+75>: movl $0xffffffff,(%eax)
0xbb9409df <+81>: xor %eax,%eax
0xbb9409e1 <+83>: add $0x4c,%esp
0xbb9409e4 <+86>: pop %ebx
0xbb9409e5 <+87>: pop %esi
0xbb9409e6 <+88>: pop %edi
0xbb9409e7 <+89>: pop %ebp
0xbb9409e8 <+90>: ret
0xbb9409e9 <+91>: cmp $0x10,%eax
0xbb9409ec <+94>: je 0xbb940a17 <gethostbyaddr+137>
0xbb9409ee <+96>: mov $0x10,%edi
0xbb9409f3 <+101>: cmp %eax,%edi
0xbb9409f5 <+103>: je 0xbb940a61 <gethostbyaddr+211>
0xbb9409f7 <+105>: call 0xbb8978bc <__errno@plt>
0xbb9409fc <+110>: movl $0x16,(%eax)
0xbb940a02 <+116>: call 0xbb896b0c <__h_errno@plt>
0xbb940a07 <+121>: movl $0xffffffff,(%eax)
0xbb940a0d <+127>: xor %eax,%eax
0xbb940a0f <+129>: add $0x4c,%esp
0xbb940a12 <+132>: pop %ebx
0xbb940a13 <+133>: pop %esi
0xbb940a14 <+134>: pop %edi
0xbb940a15 <+135>: pop %ebp
---Type <return> to continue, or q <return> to quit---
0xbb940a16 <+136>: ret
0xbb940a17 <+137>: cmpb $0xfe,(%edi)
0xbb940a1a <+140>: je 0xbb940b15 <gethostbyaddr+391>
0xbb940a20 <+146>: mov (%edi),%ecx
0xbb940a22 <+148>: test %ecx,%ecx
0xbb940a24 <+150>: jne 0xbb9409ee <gethostbyaddr+96>
0xbb940a26 <+152>: mov 0x4(%edi),%ecx
0xbb940a29 <+155>: test %ecx,%ecx
0xbb940a2b <+157>: jne 0xbb9409ee <gethostbyaddr+96>
0xbb940a2d <+159>: mov 0x8(%edi),%ecx
0xbb940a30 <+162>: cmp $0xffff0000,%ecx
0xbb940a36 <+168>: je 0xbb940a4b <gethostbyaddr+189>
0xbb940a38 <+170>: test %ecx,%ecx
0xbb940a3a <+172>: jne 0xbb9409ee <gethostbyaddr+96>
0xbb940a3c <+174>: mov 0xc(%edi),%ecx
0xbb940a3f <+177>: test %ecx,%ecx
0xbb940a41 <+179>: je 0xbb9409ee <gethostbyaddr+96>
0xbb940a43 <+181>: cmp $0x1000000,%ecx
0xbb940a49 <+187>: je 0xbb9409ee <gethostbyaddr+96>
0xbb940a4b <+189>: lea 0xc(%edi),%edx
0xbb940a4e <+192>: mov $0x4,%eax
0xbb940a53 <+197>: mov $0x2,%esi
0xbb940a58 <+202>: mov $0x4,%edi
0xbb940a5d <+207>: cmp %eax,%edi
0xbb940a5f <+209>: jne 0xbb9409f7 <gethostbyaddr+105>
0xbb940a61 <+211>: movl $0x0,-0x1c(%ebp)
0xbb940a68 <+218>: mov %edx,-0x2c(%ebp)
0xbb940a6b <+221>: call 0xbb896b0c <__h_errno@plt>
0xbb940a70 <+226>: movl $0xffffffff,(%eax)
0xbb940a76 <+232>: mov %esi,0x1c(%esp)
0xbb940a7a <+236>: mov %edi,0x18(%esp)
0xbb940a7e <+240>: mov -0x2c(%ebp),%edx
0xbb940a81 <+243>: mov %edx,0x14(%esp)
0xbb940a85 <+247>: lea -0x29f0(%ebx),%eax
0xbb940a8b <+253>: mov %eax,0x10(%esp)
0xbb940a8f <+257>: lea -0xacdb(%ebx),%eax
0xbb940a95 <+263>: mov %eax,0xc(%esp)
0xbb940a99 <+267>: lea -0xacc8(%ebx),%eax
0xbb940a9f <+273>: mov %eax,0x8(%esp)
0xbb940aa3 <+277>: lea -0x13d4(%ebx),%eax
0xbb940aa9 <+283>: mov %eax,0x4(%esp)
0xbb940aad <+287>: lea -0x1c(%ebp),%eax
0xbb940ab0 <+290>: mov %eax,(%esp)
0xbb940ab3 <+293>: call 0xbb89602c <_nsdispatch@plt>
=> 0xbb940ab8 <+298>: cmp $0x1,%eax
0xbb940abb <+301>: je 0xbb940b02 <gethostbyaddr+372>
0xbb940abd <+303>: xor %eax,%eax
0xbb940abf <+305>: add $0x4c,%esp
---Type <return> to continue, or q <return> to quit---
0xbb940ac2 <+308>: pop %ebx
0xbb940ac3 <+309>: pop %esi
0xbb940ac4 <+310>: pop %edi
0xbb940ac5 <+311>: pop %ebp
0xbb940ac6 <+312>: ret
0xbb940ac7 <+313>: lea -0xbf54(%ebx),%ecx
0xbb940acd <+319>: mov %ecx,0xc(%esp)
0xbb940ad1 <+323>: lea -0xab40(%ebx),%ecx
0xbb940ad7 <+329>: mov %ecx,0x8(%esp)
0xbb940adb <+333>: movl $0x2a4,0x4(%esp)
0xbb940ae3 <+341>: lea -0xac88(%ebx),%ecx
0xbb940ae9 <+347>: mov %ecx,(%esp)
0xbb940aec <+350>: mov %eax,-0x30(%ebp)
0xbb940aef <+353>: mov %edi,-0x2c(%ebp)
0xbb940af2 <+356>: call 0xbb8957ec <__diagassert13@plt>
0xbb940af7 <+361>: mov -0x2c(%ebp),%edx
0xbb940afa <+364>: mov -0x30(%ebp),%eax
0xbb940afd <+367>: jmp 0xbb9409b6 <gethostbyaddr+40>
0xbb940b02 <+372>: call 0xbb896b0c <__h_errno@plt>
0xbb940b07 <+377>: movl $0x0,(%eax)
0xbb940b0d <+383>: mov -0x1c(%ebp),%eax
0xbb940b10 <+386>: jmp 0xbb9409e1 <gethostbyaddr+83>
0xbb940b15 <+391>: movzbl 0x1(%edi),%ecx
0xbb940b19 <+395>: and $0xc0,%ecx
0xbb940b1f <+401>: cmp $0x80,%ecx
0xbb940b25 <+407>: je 0xbb940b33 <gethostbyaddr+421>
0xbb940b27 <+409>: cmp $0xc0,%ecx
0xbb940b2d <+415>: jne 0xbb940a20 <gethostbyaddr+146>
0xbb940b33 <+421>: call 0xbb896b0c <__h_errno@plt>
0xbb940b38 <+426>: movl $0x1,(%eax)
0xbb940b3e <+432>: xor %eax,%eax
0xbb940b40 <+434>: jmp 0xbb9409e1 <gethostbyaddr+83>
End of assembler dump.
(gdb) f 7
#7 0xbb93e973 in getpeername () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efe13c 0xb9efe13c
ebp 0xb9efe5d4 0xb9efe5d4
esi 0xb9efef88 -1175457912
edi 0xb9efef8c -1175457908
eip 0xbb93e973 0xbb93e973 <getpeername+1571>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function getpeername:
0xbb93e350 <+0>: mov $0x1f,%eax
0xbb93e355 <+5>: int $0x80
0xbb93e357 <+7>: jb 0xbb93e35a <getpeername+10>
0xbb93e359 <+9>: ret
0xbb93e35a <+10>: push %ebx
0xbb93e35b <+11>: call 0xbb93e360 <getpeername+16>
0xbb93e360 <+16>: pop %ebx
0xbb93e361 <+17>: add $0x55194,%ebx
0xbb93e367 <+23>: mov -0x200(%ebx),%ecx
0xbb93e36d <+29>: pop %ebx
0xbb93e36e <+30>: jmp *%ecx
0xbb93e370 <+32>: push %ebp
0xbb93e371 <+33>: mov %esp,%ebp
0xbb93e373 <+35>: push %edi
0xbb93e374 <+36>: push %esi
0xbb93e375 <+37>: push %ebx
0xbb93e376 <+38>: sub $0x4c,%esp
0xbb93e379 <+41>: call 0xbb93e37e <getpeername+46>
0xbb93e37e <+46>: pop %ebx
0xbb93e37f <+47>: add $0x55176,%ebx
0xbb93e385 <+53>: mov %eax,-0x24(%ebp)
0xbb93e388 <+56>: mov %edx,-0x20(%ebp)
0xbb93e38b <+59>: mov 0x8(%ebp),%eax
0xbb93e38e <+62>: movb $0x0,(%eax)
0xbb93e391 <+65>: mov -0x20(%ebp),%eax
0xbb93e394 <+68>: test %eax,%eax
0xbb93e396 <+70>: je 0xbb93e429 <getpeername+217>
0xbb93e39c <+76>: mov -0x24(%ebp),%eax
0xbb93e39f <+79>: movzbl (%eax),%ecx
0xbb93e3a2 <+82>: mov 0x8(%ebp),%edx
0xbb93e3a5 <+85>: xor %esi,%esi
0xbb93e3a7 <+87>: lea -0x13eea(%ebx),%edi
0xbb93e3ad <+93>: mov %edi,-0x2c(%ebp)
0xbb93e3b0 <+96>: mov %edi,%eax
0xbb93e3b2 <+98>: lea -0xadad(%ebx),%edi
0xbb93e3b8 <+104>: mov %edi,-0x28(%ebp)
0xbb93e3bb <+107>: mov %ecx,-0x1c(%ebp)
0xbb93e3be <+110>: mov %eax,%ecx
0xbb93e3c0 <+112>: mov 0xc(%ebp),%edi
0xbb93e3c3 <+115>: jmp 0xbb93e3cf <getpeername+127>
0xbb93e3c5 <+117>: lea -0x753f(%ebx),%ecx
0xbb93e3cb <+123>: add %eax,%edx
0xbb93e3cd <+125>: sub %eax,%edi
0xbb93e3cf <+127>: mov -0x1c(%ebp),%eax
0xbb93e3d2 <+130>: mov %eax,0x10(%esp)
0xbb93e3d6 <+134>: mov %ecx,0xc(%esp)
0xbb93e3da <+138>: mov -0x28(%ebp),%ecx
---Type <return> to continue, or q <return> to quit---
0xbb93e3dd <+141>: mov %ecx,0x8(%esp)
0xbb93e3e1 <+145>: mov %edi,0x4(%esp)
0xbb93e3e5 <+149>: mov %edx,(%esp)
0xbb93e3e8 <+152>: mov %edx,-0x30(%ebp)
0xbb93e3eb <+155>: call 0xbb89544c <snprintf@plt>
0xbb93e3f0 <+160>: test %eax,%eax
0xbb93e3f2 <+162>: mov -0x30(%ebp),%edx
0xbb93e3f5 <+165>: js 0xbb93e416 <getpeername+198>
0xbb93e3f7 <+167>: cmp %edi,%eax
0xbb93e3f9 <+169>: jae 0xbb93e416 <getpeername+198>
0xbb93e3fb <+171>: add $0x1,%esi
0xbb93e3fe <+174>: cmp %esi,-0x20(%ebp)
0xbb93e401 <+177>: jbe 0xbb93e429 <getpeername+217>
0xbb93e403 <+179>: mov -0x24(%ebp),%ecx
0xbb93e406 <+182>: movzbl (%ecx,%esi,1),%ecx
0xbb93e40a <+186>: mov %ecx,-0x1c(%ebp)
0xbb93e40d <+189>: test %esi,%esi
0xbb93e40f <+191>: jne 0xbb93e3c5 <getpeername+117>
0xbb93e411 <+193>: mov -0x2c(%ebp),%ecx
0xbb93e414 <+196>: jmp 0xbb93e3cb <getpeername+123>
0xbb93e416 <+198>: mov 0x8(%ebp),%edi
0xbb93e419 <+201>: movb $0x0,(%edi)
0xbb93e41c <+204>: mov $0x6,%eax
0xbb93e421 <+209>: add $0x4c,%esp
0xbb93e424 <+212>: pop %ebx
0xbb93e425 <+213>: pop %esi
0xbb93e426 <+214>: pop %edi
0xbb93e427 <+215>: pop %ebp
0xbb93e428 <+216>: ret
0xbb93e429 <+217>: xor %eax,%eax
0xbb93e42b <+219>: add $0x4c,%esp
0xbb93e42e <+222>: pop %ebx
0xbb93e42f <+223>: pop %esi
0xbb93e430 <+224>: pop %edi
0xbb93e431 <+225>: pop %ebp
0xbb93e432 <+226>: ret
0xbb93e433 <+227>: push %ebp
0xbb93e434 <+228>: mov %esp,%ebp
0xbb93e436 <+230>: push %edi
0xbb93e437 <+231>: push %esi
0xbb93e438 <+232>: push %ebx
0xbb93e439 <+233>: sub $0x33c,%esp
0xbb93e43f <+239>: call 0xbb93e444 <getpeername+244>
0xbb93e444 <+244>: pop %ebx
0xbb93e445 <+245>: add $0x550b0,%ebx
0xbb93e44b <+251>: mov %eax,-0x32c(%ebp)
0xbb93e451 <+257>: mov %edx,%esi
0xbb93e453 <+259>: mov 0x8(%ebp),%eax
---Type <return> to continue, or q <return> to quit---
0xbb93e456 <+262>: mov %eax,-0x330(%ebp)
0xbb93e45c <+268>: mov -0x318(%ebx),%edx
0xbb93e462 <+274>: mov (%edx),%ecx
0xbb93e464 <+276>: mov %ecx,-0x1c(%ebp)
0xbb93e467 <+279>: xor %ecx,%ecx
0xbb93e469 <+281>: mov -0x32c(%ebp),%ecx
0xbb93e46f <+287>: test %ecx,%ecx
0xbb93e471 <+289>: je 0xbb93e623 <getpeername+723>
0xbb93e477 <+295>: test %esi,%esi
0xbb93e479 <+297>: je 0xbb93e652 <getpeername+770>
0xbb93e47f <+303>: mov -0x330(%ebp),%edx
0xbb93e485 <+309>: test %edx,%edx
0xbb93e487 <+311>: je 0xbb93e5f4 <getpeername+676>
0xbb93e48d <+317>: movl $0x200,0xc(%esp)
0xbb93e495 <+325>: lea -0x31c(%ebp),%edx
0xbb93e49b <+331>: mov %edx,0x8(%esp)
0xbb93e49f <+335>: mov %esi,0x4(%esp)
0xbb93e4a3 <+339>: movl $0x18,(%esp)
0xbb93e4aa <+346>: mov %edx,-0x338(%ebp)
0xbb93e4b0 <+352>: call 0xbb89696c <_inet_ntop@plt>
0xbb93e4b5 <+357>: test %eax,%eax
0xbb93e4b7 <+359>: mov -0x338(%ebp),%edx
0xbb93e4bd <+365>: je 0xbb93e5ea <getpeername+666>
0xbb93e4c3 <+371>: xor %eax,%eax
0xbb93e4c5 <+373>: mov $0xffffffff,%ecx
0xbb93e4ca <+378>: mov %edx,%edi
0xbb93e4cc <+380>: repnz scas %es:(%edi),%al
0xbb93e4ce <+382>: mov %ecx,%esi
0xbb93e4d0 <+384>: not %esi
0xbb93e4d2 <+386>: lea -0x1(%esi),%eax
0xbb93e4d5 <+389>: mov %eax,-0x334(%ebp)
0xbb93e4db <+395>: cmp 0xc(%ebp),%esi
0xbb93e4de <+398>: jbe 0xbb93e501 <getpeername+433>
0xbb93e4e0 <+400>: mov $0xe,%eax
0xbb93e4e5 <+405>: mov -0x318(%ebx),%ecx
0xbb93e4eb <+411>: mov -0x1c(%ebp),%edx
0xbb93e4ee <+414>: xor (%ecx),%edx
0xbb93e4f0 <+416>: jne 0xbb93e73c <getpeername+1004>
0xbb93e4f6 <+422>: add $0x33c,%esp
0xbb93e4fc <+428>: pop %ebx
0xbb93e4fd <+429>: pop %esi
0xbb93e4fe <+430>: pop %edi
0xbb93e4ff <+431>: pop %ebp
0xbb93e500 <+432>: ret
0xbb93e501 <+433>: mov 0xc(%ebp),%ecx
0xbb93e504 <+436>: mov %ecx,0x8(%esp)
0xbb93e508 <+440>: mov %edx,0x4(%esp)
0xbb93e50c <+444>: mov -0x330(%ebp),%eax
---Type <return> to continue, or q <return> to quit---
0xbb93e512 <+450>: mov %eax,(%esp)
0xbb93e515 <+453>: call 0xbb89683c <_strlcpy@plt>
0xbb93e51a <+458>: mov -0x32c(%ebp),%edx
0xbb93e520 <+464>: mov 0x18(%edx),%eax
0xbb93e523 <+467>: test %eax,%eax
0xbb93e525 <+469>: jne 0xbb93e52b <getpeername+475>
0xbb93e527 <+471>: xor %eax,%eax
0xbb93e529 <+473>: jmp 0xbb93e4e5 <getpeername+405>
0xbb93e52b <+475>: testb $0x40,0x10(%ebp)
0xbb93e52f <+479>: jne 0xbb93e6de <getpeername+910>
0xbb93e535 <+485>: mov -0x32c(%ebp),%ecx
0xbb93e53b <+491>: movzbl 0x8(%ecx),%edx
0xbb93e53f <+495>: cmp $0xfe,%dl
0xbb93e542 <+498>: je 0xbb93e681 <getpeername+817>
0xbb93e548 <+504>: cmp $0xff,%dl
0xbb93e54b <+507>: jne 0xbb93e694 <getpeername+836>
0xbb93e551 <+513>: mov -0x32c(%ebp),%ecx
0xbb93e557 <+519>: movzbl 0x9(%ecx),%edx
0xbb93e55b <+523>: and $0xf,%edx
0xbb93e55e <+526>: cmp $0x2,%edx
0xbb93e561 <+529>: jne 0xbb93e694 <getpeername+836>
0xbb93e567 <+535>: lea -0x11c(%ebp),%edx
0xbb93e56d <+541>: mov %edx,0x4(%esp)
0xbb93e571 <+545>: mov %eax,(%esp)
0xbb93e574 <+548>: mov %edx,-0x338(%ebp)
0xbb93e57a <+554>: call 0xbb8944bc <_if_indextoname@plt>
0xbb93e57f <+559>: mov %eax,%edi
0xbb93e581 <+561>: test %eax,%eax
0xbb93e583 <+563>: mov -0x338(%ebp),%edx
0xbb93e589 <+569>: je 0xbb93e72e <getpeername+990>
0xbb93e58f <+575>: xor %eax,%eax
0xbb93e591 <+577>: mov $0xffffffff,%ecx
0xbb93e596 <+582>: repnz scas %es:(%edi),%al
0xbb93e598 <+584>: not %ecx
0xbb93e59a <+586>: sub $0x1,%ecx
0xbb93e59d <+589>: js 0xbb93e4e0 <getpeername+400>
0xbb93e5a3 <+595>: mov -0x334(%ebp),%edi
0xbb93e5a9 <+601>: lea (%ecx,%edi,1),%edi
0xbb93e5ac <+604>: lea 0x2(%edi),%eax
0xbb93e5af <+607>: cmp %eax,0xc(%ebp)
0xbb93e5b2 <+610>: jb 0xbb93e4e0 <getpeername+400>
0xbb93e5b8 <+616>: add -0x330(%ebp),%esi
0xbb93e5be <+622>: mov %ecx,0x8(%esp)
0xbb93e5c2 <+626>: mov %edx,0x4(%esp)
0xbb93e5c6 <+630>: mov %esi,(%esp)
0xbb93e5c9 <+633>: call 0xbb89473c <memcpy@plt>
0xbb93e5ce <+638>: mov -0x330(%ebp),%edx
0xbb93e5d4 <+644>: mov -0x334(%ebp),%eax
---Type <return> to continue, or q <return> to quit---
0xbb93e5da <+650>: movb $0x25,(%edx,%eax,1)
0xbb93e5de <+654>: movb $0x0,0x1(%edx,%edi,1)
0xbb93e5e3 <+659>: xor %eax,%eax
0xbb93e5e5 <+661>: jmp 0xbb93e4e5 <getpeername+405>
0xbb93e5ea <+666>: mov $0xb,%eax
0xbb93e5ef <+671>: jmp 0xbb93e4e5 <getpeername+405>
0xbb93e5f4 <+676>: lea -0x15502(%ebx),%eax
0xbb93e5fa <+682>: mov %eax,0xc(%esp)
0xbb93e5fe <+686>: lea -0xad24(%ebx),%eax
0xbb93e604 <+692>: mov %eax,0x8(%esp)
0xbb93e608 <+696>: movl $0x195,0x4(%esp)
0xbb93e610 <+704>: lea -0xad78(%ebx),%eax
0xbb93e616 <+710>: mov %eax,(%esp)
0xbb93e619 <+713>: call 0xbb8957ec <__diagassert13@plt>
0xbb93e61e <+718>: jmp 0xbb93e48d <getpeername+317>
0xbb93e623 <+723>: lea -0xada6(%ebx),%eax
0xbb93e629 <+729>: mov %eax,0xc(%esp)
0xbb93e62d <+733>: lea -0xad24(%ebx),%eax
0xbb93e633 <+739>: mov %eax,0x8(%esp)
0xbb93e637 <+743>: movl $0x193,0x4(%esp)
0xbb93e63f <+751>: lea -0xad78(%ebx),%eax
0xbb93e645 <+757>: mov %eax,(%esp)
0xbb93e648 <+760>: call 0xbb8957ec <__diagassert13@plt>
0xbb93e64d <+765>: jmp 0xbb93e477 <getpeername+295>
0xbb93e652 <+770>: lea -0xbf54(%ebx),%eax
0xbb93e658 <+776>: mov %eax,0xc(%esp)
0xbb93e65c <+780>: lea -0xad24(%ebx),%eax
0xbb93e662 <+786>: mov %eax,0x8(%esp)
0xbb93e666 <+790>: movl $0x194,0x4(%esp)
0xbb93e66e <+798>: lea -0xad78(%ebx),%eax
0xbb93e674 <+804>: mov %eax,(%esp)
0xbb93e677 <+807>: call 0xbb8957ec <__diagassert13@plt>
0xbb93e67c <+812>: jmp 0xbb93e47f <getpeername+303>
0xbb93e681 <+817>: movzbl 0x9(%ecx),%edx
0xbb93e685 <+821>: and $0xc0,%edx
0xbb93e68b <+827>: add $0xffffff80,%edx
0xbb93e68e <+830>: je 0xbb93e567 <getpeername+535>
0xbb93e694 <+836>: lea -0x11c(%ebp),%edx
0xbb93e69a <+842>: mov %eax,0xc(%esp)
0xbb93e69e <+846>: lea -0xad85(%ebx),%eax
0xbb93e6a4 <+852>: mov %eax,0x8(%esp)
0xbb93e6a8 <+856>: movl $0x100,0x4(%esp)
0xbb93e6b0 <+864>: mov %edx,(%esp)
0xbb93e6b3 <+867>: mov %edx,-0x338(%ebp)
0xbb93e6b9 <+873>: call 0xbb89544c <snprintf@plt>
0xbb93e6be <+878>: test %eax,%eax
0xbb93e6c0 <+880>: mov -0x338(%ebp),%edx
0xbb93e6c6 <+886>: js 0xbb93e4e0 <getpeername+400>
---Type <return> to continue, or q <return> to quit---
0xbb93e6cc <+892>: mov %eax,%ecx
0xbb93e6ce <+894>: cmp $0xff,%eax
0xbb93e6d3 <+899>: jbe 0xbb93e5a3 <getpeername+595>
0xbb93e6d9 <+905>: jmp 0xbb93e4e0 <getpeername+400>
0xbb93e6de <+910>: mov %eax,0xc(%esp)
0xbb93e6e2 <+914>: lea -0xad85(%ebx),%eax
0xbb93e6e8 <+920>: mov %eax,0x8(%esp)
0xbb93e6ec <+924>: movl $0x100,0x4(%esp)
0xbb93e6f4 <+932>: lea -0x11c(%ebp),%edx
0xbb93e6fa <+938>: mov %edx,(%esp)
0xbb93e6fd <+941>: mov %edx,-0x338(%ebp)
0xbb93e703 <+947>: call 0xbb89544c <snprintf@plt>
0xbb93e708 <+952>: test %eax,%eax
0xbb93e70a <+954>: mov -0x338(%ebp),%edx
0xbb93e710 <+960>: js 0xbb93e4e0 <getpeername+400>
0xbb93e716 <+966>: mov %eax,%ecx
0xbb93e718 <+968>: mov $0xe,%eax
0xbb93e71d <+973>: cmp $0xff,%ecx
0xbb93e723 <+979>: ja 0xbb93e4e5 <getpeername+405>
0xbb93e729 <+985>: jmp 0xbb93e5a3 <getpeername+595>
0xbb93e72e <+990>: mov -0x32c(%ebp),%ecx
0xbb93e734 <+996>: mov 0x18(%ecx),%eax
0xbb93e737 <+999>: jmp 0xbb93e69a <getpeername+842>
0xbb93e73c <+1004>: call 0xbb896adc <__stack_chk_fail_local@plt>
0xbb93e741 <+1009>: push %ebp
0xbb93e742 <+1010>: mov %esp,%ebp
0xbb93e744 <+1012>: push %edi
0xbb93e745 <+1013>: push %esi
0xbb93e746 <+1014>: push %ebx
0xbb93e747 <+1015>: sub $0x48c,%esp
0xbb93e74d <+1021>: call 0xbb93e752 <getpeername+1026>
0xbb93e752 <+1026>: pop %ebx
0xbb93e753 <+1027>: add $0x54da2,%ebx
0xbb93e759 <+1033>: mov %eax,%esi
0xbb93e75b <+1035>: mov 0x8(%ebp),%eax
0xbb93e75e <+1038>: mov %eax,-0x474(%ebp)
0xbb93e764 <+1044>: mov 0x10(%ebp),%ecx
0xbb93e767 <+1047>: mov %ecx,-0x470(%ebp)
0xbb93e76d <+1053>: mov -0x318(%ebx),%eax
0xbb93e773 <+1059>: mov (%eax),%ecx
0xbb93e775 <+1061>: mov %ecx,-0x1c(%ebp)
0xbb93e778 <+1064>: xor %ecx,%ecx
0xbb93e77a <+1066>: test %esi,%esi
0xbb93e77c <+1068>: je 0xbb93e7f2 <getpeername+1186>
0xbb93e77e <+1070>: movzbl 0x1(%esi),%eax
0xbb93e782 <+1074>: mov %al,-0x46c(%ebp)
0xbb93e788 <+1080>: movzbl %al,%edi
0xbb93e78b <+1083>: cmp $0x18,%edi
---Type <return> to continue, or q <return> to quit---
0xbb93e78e <+1086>: je 0xbb93e9bc <getpeername+1644>
0xbb93e794 <+1092>: xor %eax,%eax
0xbb93e796 <+1094>: jmp 0xbb93e79c <getpeername+1100>
0xbb93e798 <+1096>: cmp %ecx,%edi
0xbb93e79a <+1098>: je 0xbb93e7d0 <getpeername+1152>
0xbb93e79c <+1100>: add $0x1,%eax
0xbb93e79f <+1103>: mov %eax,%ecx
0xbb93e7a1 <+1105>: shl $0x4,%ecx
0xbb93e7a4 <+1108>: mov -0xad54(%ecx,%ebx,1),%ecx
0xbb93e7ab <+1115>: test %ecx,%ecx
0xbb93e7ad <+1117>: jne 0xbb93e798 <getpeername+1096>
0xbb93e7af <+1119>: mov $0x5,%eax
0xbb93e7b4 <+1124>: mov -0x318(%ebx),%edx
0xbb93e7ba <+1130>: mov -0x1c(%ebp),%ecx
0xbb93e7bd <+1133>: xor (%edx),%ecx
0xbb93e7bf <+1135>: jne 0xbb93eb8e <getpeername+2110>
0xbb93e7c5 <+1141>: add $0x48c,%esp
0xbb93e7cb <+1147>: pop %ebx
0xbb93e7cc <+1148>: pop %esi
0xbb93e7cd <+1149>: pop %edi
0xbb93e7ce <+1150>: pop %ebp
0xbb93e7cf <+1151>: ret
0xbb93e7d0 <+1152>: mov %eax,-0x478(%ebp)
0xbb93e7d6 <+1158>: lea -0xad54(%ebx),%ecx
0xbb93e7dc <+1164>: mov %ecx,-0x47c(%ebp)
0xbb93e7e2 <+1170>: mov -0x478(%ebp),%eax
0xbb93e7e8 <+1176>: shl $0x4,%eax
0xbb93e7eb <+1179>: add %ecx,%eax
0xbb93e7ed <+1181>: cmp %edx,0x8(%eax)
0xbb93e7f0 <+1184>: je 0xbb93e7f9 <getpeername+1193>
0xbb93e7f2 <+1186>: mov $0x4,%eax
0xbb93e7f7 <+1191>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93e7f9 <+1193>: movzwl 0x2(%esi),%edx
0xbb93e7fd <+1197>: mov 0xc(%eax),%eax
0xbb93e800 <+1200>: mov %eax,-0x480(%ebp)
0xbb93e806 <+1206>: mov -0x470(%ebp),%eax
0xbb93e80c <+1212>: test %eax,%eax
0xbb93e80e <+1214>: je 0xbb93e899 <getpeername+1353>
0xbb93e814 <+1220>: mov 0x14(%ebp),%edi
0xbb93e817 <+1223>: test %edi,%edi
0xbb93e819 <+1225>: je 0xbb93e899 <getpeername+1353>
0xbb93e81b <+1227>: mov 0x18(%ebp),%eax
0xbb93e81e <+1230>: and $0x8,%eax
0xbb93e821 <+1233>: je 0xbb93ea52 <getpeername+1794>
0xbb93e827 <+1239>: mov %edx,%eax
0xbb93e829 <+1241>: ror $0x8,%ax
0xbb93e82d <+1245>: movzwl %ax,%eax
0xbb93e830 <+1248>: mov %eax,0xc(%esp)
---Type <return> to continue, or q <return> to quit---
0xbb93e834 <+1252>: lea -0xad85(%ebx),%eax
0xbb93e83a <+1258>: mov %eax,0x8(%esp)
0xbb93e83e <+1262>: movl $0x200,0x4(%esp)
0xbb93e846 <+1270>: lea -0x21c(%ebp),%edx
0xbb93e84c <+1276>: mov %edx,(%esp)
0xbb93e84f <+1279>: mov %edx,-0x484(%ebp)
0xbb93e855 <+1285>: call 0xbb89544c <snprintf@plt>
0xbb93e85a <+1290>: xor %eax,%eax
0xbb93e85c <+1292>: mov $0xffffffff,%ecx
0xbb93e861 <+1297>: mov -0x484(%ebp),%edx
0xbb93e867 <+1303>: mov %edx,%edi
0xbb93e869 <+1305>: repnz scas %es:(%edi),%al
0xbb93e86b <+1307>: not %ecx
0xbb93e86d <+1309>: cmp %ecx,0x14(%ebp)
0xbb93e870 <+1312>: jb 0xbb93e938 <getpeername+1512>
0xbb93e876 <+1318>: mov 0x14(%ebp),%eax
0xbb93e879 <+1321>: mov %eax,0x8(%esp)
0xbb93e87d <+1325>: mov %edx,0x4(%esp)
0xbb93e881 <+1329>: mov -0x470(%ebp),%edx
0xbb93e887 <+1335>: mov %edx,(%esp)
0xbb93e88a <+1338>: call 0xbb89683c <_strlcpy@plt>
0xbb93e88f <+1343>: movzbl 0x1(%esi),%ecx
0xbb93e893 <+1347>: mov %cl,-0x46c(%ebp)
0xbb93e899 <+1353>: cmpb $0x2,-0x46c(%ebp)
0xbb93e8a0 <+1360>: je 0xbb93ea09 <getpeername+1721>
0xbb93e8a6 <+1366>: cmpb $0x18,-0x46c(%ebp)
0xbb93e8ad <+1373>: je 0xbb93e9cb <getpeername+1659>
0xbb93e8b3 <+1379>: mov -0x474(%ebp),%eax
0xbb93e8b9 <+1385>: test %eax,%eax
0xbb93e8bb <+1387>: je 0xbb93e942 <getpeername+1522>
0xbb93e8c1 <+1393>: mov 0xc(%ebp),%edi
0xbb93e8c4 <+1396>: test %edi,%edi
0xbb93e8c6 <+1398>: je 0xbb93e942 <getpeername+1522>
0xbb93e8c8 <+1400>: mov -0x480(%ebp),%edi
0xbb93e8ce <+1406>: lea (%esi,%edi,1),%edi
0xbb93e8d1 <+1409>: testb $0x2,0x18(%ebp)
0xbb93e8d5 <+1413>: je 0xbb93e949 <getpeername+1529>
0xbb93e8d7 <+1415>: testb $0x4,0x18(%ebp)
0xbb93e8db <+1419>: jne 0xbb93eb1d <getpeername+1997>
0xbb93e8e1 <+1425>: mov -0x478(%ebp),%eax
0xbb93e8e7 <+1431>: shl $0x4,%eax
0xbb93e8ea <+1434>: mov -0x47c(%ebp),%edx
0xbb93e8f0 <+1440>: mov (%edx,%eax,1),%eax
0xbb93e8f3 <+1443>: cmp $0x18,%eax
0xbb93e8f6 <+1446>: je 0xbb93eb32 <getpeername+2018>
0xbb93e8fc <+1452>: movl $0x200,0xc(%esp)
0xbb93e904 <+1460>: lea -0x41c(%ebp),%esi
0xbb93e90a <+1466>: mov %esi,0x8(%esp)
---Type <return> to continue, or q <return> to quit---
0xbb93e90e <+1470>: mov %edi,0x4(%esp)
0xbb93e912 <+1474>: mov %eax,(%esp)
0xbb93e915 <+1477>: call 0xbb89696c <_inet_ntop@plt>
0xbb93e91a <+1482>: test %eax,%eax
0xbb93e91c <+1484>: je 0xbb93ebd1 <getpeername+2177>
0xbb93e922 <+1490>: xor %eax,%eax
0xbb93e924 <+1492>: mov $0xffffffff,%ecx
0xbb93e929 <+1497>: mov %esi,%edi
0xbb93e92b <+1499>: repnz scas %es:(%edi),%al
0xbb93e92d <+1501>: not %ecx
0xbb93e92f <+1503>: cmp %ecx,0xc(%ebp)
0xbb93e932 <+1506>: jae 0xbb93eb57 <getpeername+2055>
0xbb93e938 <+1512>: mov $0x6,%eax
0xbb93e93d <+1517>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93e942 <+1522>: xor %eax,%eax
0xbb93e944 <+1524>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93e949 <+1529>: mov -0x478(%ebp),%eax
0xbb93e94f <+1535>: shl $0x4,%eax
0xbb93e952 <+1538>: add -0x47c(%ebp),%eax
0xbb93e958 <+1544>: mov (%eax),%edx
0xbb93e95a <+1546>: mov %edx,0x8(%esp)
0xbb93e95e <+1550>: mov 0x4(%eax),%eax
0xbb93e961 <+1553>: mov %eax,0x4(%esp)
0xbb93e965 <+1557>: mov %edi,(%esp)
0xbb93e968 <+1560>: mov %edx,-0x484(%ebp)
0xbb93e96e <+1566>: call 0xbb89680c <_gethostbyaddr@plt>
=> 0xbb93e973 <+1571>: test %eax,%eax
0xbb93e975 <+1573>: mov -0x484(%ebp),%edx
0xbb93e97b <+1579>: je 0xbb93eb93 <getpeername+2115>
0xbb93e981 <+1585>: mov (%eax),%edx
0xbb93e983 <+1587>: xor %eax,%eax
0xbb93e985 <+1589>: or $0xffffffff,%ecx
0xbb93e988 <+1592>: mov %edx,%edi
0xbb93e98a <+1594>: repnz scas %es:(%edi),%al
0xbb93e98c <+1596>: not %ecx
0xbb93e98e <+1598>: mov $0x6,%eax
0xbb93e993 <+1603>: cmp %ecx,0xc(%ebp)
0xbb93e996 <+1606>: jb 0xbb93e7b4 <getpeername+1124>
0xbb93e99c <+1612>: mov 0xc(%ebp),%ecx
0xbb93e99f <+1615>: mov %ecx,0x8(%esp)
0xbb93e9a3 <+1619>: mov %edx,0x4(%esp)
0xbb93e9a7 <+1623>: mov -0x474(%ebp),%eax
0xbb93e9ad <+1629>: mov %eax,(%esp)
0xbb93e9b0 <+1632>: call 0xbb89683c <_strlcpy@plt>
0xbb93e9b5 <+1637>: xor %eax,%eax
0xbb93e9b7 <+1639>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93e9bc <+1644>: movl $0x0,-0x478(%ebp)
0xbb93e9c6 <+1654>: jmp 0xbb93e7d6 <getpeername+1158>
---Type <return> to continue, or q <return> to quit---
0xbb93e9cb <+1659>: movzbl 0x8(%esi),%eax
0xbb93e9cf <+1663>: test %al,%al
0xbb93e9d1 <+1665>: jne 0xbb93ea39 <getpeername+1769>
0xbb93e9d3 <+1667>: mov 0x8(%esi),%ecx
0xbb93e9d6 <+1670>: test %ecx,%ecx
0xbb93e9d8 <+1672>: jne 0xbb93ea00 <getpeername+1712>
0xbb93e9da <+1674>: mov 0xc(%esi),%edx
0xbb93e9dd <+1677>: test %edx,%edx
0xbb93e9df <+1679>: jne 0xbb93ea00 <getpeername+1712>
0xbb93e9e1 <+1681>: mov 0x10(%esi),%eax
0xbb93e9e4 <+1684>: cmp $0xffff0000,%eax
0xbb93e9e9 <+1689>: je 0xbb93e8b3 <getpeername+1379>
0xbb93e9ef <+1695>: test %eax,%eax
0xbb93e9f1 <+1697>: jne 0xbb93ea00 <getpeername+1712>
0xbb93e9f3 <+1699>: cmpl $0x1000000,0x14(%esi)
0xbb93e9fa <+1706>: je 0xbb93e8b3 <getpeername+1379>
0xbb93ea00 <+1712>: orl $0x2,0x18(%ebp)
0xbb93ea04 <+1716>: jmp 0xbb93e8b3 <getpeername+1379>
0xbb93ea09 <+1721>: mov 0x4(%esi),%eax
0xbb93ea0c <+1724>: bswap %eax
0xbb93ea0e <+1726>: mov %eax,%edx
0xbb93ea10 <+1728>: and $0xf0000000,%edx
0xbb93ea16 <+1734>: cmp $0xe0000000,%edx
0xbb93ea1c <+1740>: je 0xbb93eade <getpeername+1934>
0xbb93ea22 <+1746>: cmp $0xf0000000,%edx
0xbb93ea28 <+1752>: je 0xbb93eade <getpeername+1934>
0xbb93ea2e <+1758>: shr $0x18,%eax
0xbb93ea31 <+1761>: jne 0xbb93e8b3 <getpeername+1379>
0xbb93ea37 <+1767>: jmp 0xbb93ea00 <getpeername+1712>
0xbb93ea39 <+1769>: cmp $0xfe,%al
0xbb93ea3b <+1771>: nop
0xbb93ea3c <+1772>: lea 0x0(%esi,%eiz,1),%esi
0xbb93ea40 <+1776>: je 0xbb93eb77 <getpeername+2087>
0xbb93ea46 <+1782>: cmp $0xff,%al
0xbb93ea48 <+1784>: jne 0xbb93e8b3 <getpeername+1379>
0xbb93ea4e <+1790>: xchg %ax,%ax
0xbb93ea50 <+1792>: jmp 0xbb93ea00 <getpeername+1712>
0xbb93ea52 <+1794>: lea -0x464(%ebp),%ecx
0xbb93ea58 <+1800>: mov %ecx,-0x46c(%ebp)
0xbb93ea5e <+1806>: mov $0xe,%ecx
0xbb93ea63 <+1811>: mov -0x46c(%ebp),%edi
0xbb93ea69 <+1817>: rep stos %eax,%es:(%edi)
0xbb93ea6b <+1819>: testb $0x10,0x18(%ebp)
0xbb93ea6f <+1823>: je 0xbb93eb27 <getpeername+2007>
0xbb93ea75 <+1829>: lea -0xc7b2(%ebx),%ecx
0xbb93ea7b <+1835>: mov -0x46c(%ebp),%eax
0xbb93ea81 <+1841>: mov %eax,0xc(%esp)
0xbb93ea85 <+1845>: lea -0x42c(%ebp),%eax
---Type <return> to continue, or q <return> to quit---
0xbb93ea8b <+1851>: mov %eax,0x8(%esp)
0xbb93ea8f <+1855>: mov %ecx,0x4(%esp)
0xbb93ea93 <+1859>: movzwl %dx,%eax
0xbb93ea96 <+1862>: mov %eax,(%esp)
0xbb93ea99 <+1865>: mov %edx,-0x484(%ebp)
0xbb93ea9f <+1871>: call 0xbb8951dc <_getservbyport_r@plt>
0xbb93eaa4 <+1876>: test %eax,%eax
0xbb93eaa6 <+1878>: mov -0x484(%ebp),%edx
0xbb93eaac <+1884>: je 0xbb93e827 <getpeername+1239>
0xbb93eab2 <+1890>: mov (%eax),%edx
0xbb93eab4 <+1892>: xor %eax,%eax
0xbb93eab6 <+1894>: mov $0xffffffff,%ecx
0xbb93eabb <+1899>: mov %edx,%edi
0xbb93eabd <+1901>: repnz scas %es:(%edi),%al
0xbb93eabf <+1903>: not %ecx
0xbb93eac1 <+1905>: cmp %ecx,0x14(%ebp)
0xbb93eac4 <+1908>: jae 0xbb93eae7 <getpeername+1943>
0xbb93eac6 <+1910>: mov -0x46c(%ebp),%edx
0xbb93eacc <+1916>: mov %edx,(%esp)
0xbb93eacf <+1919>: call 0xbb896d0c <_endservent_r@plt>
0xbb93ead4 <+1924>: mov $0x6,%eax
0xbb93ead9 <+1929>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93eade <+1934>: orl $0x2,0x18(%ebp)
0xbb93eae2 <+1938>: jmp 0xbb93ea2e <getpeername+1758>
0xbb93eae7 <+1943>: mov 0x14(%ebp),%ecx
0xbb93eaea <+1946>: mov %ecx,0x8(%esp)
0xbb93eaee <+1950>: mov %edx,0x4(%esp)
0xbb93eaf2 <+1954>: mov -0x470(%ebp),%eax
0xbb93eaf8 <+1960>: mov %eax,(%esp)
0xbb93eafb <+1963>: call 0xbb89683c <_strlcpy@plt>
0xbb93eb00 <+1968>: mov -0x46c(%ebp),%edx
0xbb93eb06 <+1974>: mov %edx,(%esp)
0xbb93eb09 <+1977>: call 0xbb896d0c <_endservent_r@plt>
0xbb93eb0e <+1982>: movzbl 0x1(%esi),%ecx
0xbb93eb12 <+1986>: mov %cl,-0x46c(%ebp)
0xbb93eb18 <+1992>: jmp 0xbb93e899 <getpeername+1353>
0xbb93eb1d <+1997>: mov $0x8,%eax
0xbb93eb22 <+2002>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93eb27 <+2007>: lea -0x153d3(%ebx),%ecx
0xbb93eb2d <+2013>: jmp 0xbb93ea7b <getpeername+1835>
0xbb93eb32 <+2018>: mov 0x18(%ebp),%ecx
0xbb93eb35 <+2021>: mov %ecx,0x8(%esp)
0xbb93eb39 <+2025>: mov 0xc(%ebp),%eax
0xbb93eb3c <+2028>: mov %eax,0x4(%esp)
0xbb93eb40 <+2032>: mov -0x474(%ebp),%edx
0xbb93eb46 <+2038>: mov %edx,(%esp)
0xbb93eb49 <+2041>: mov %edi,%edx
0xbb93eb4b <+2043>: mov %esi,%eax
---Type <return> to continue, or q <return> to quit---
0xbb93eb4d <+2045>: call 0xbb93e433 <getpeername+227>
0xbb93eb52 <+2050>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93eb57 <+2055>: mov 0xc(%ebp),%ecx
0xbb93eb5a <+2058>: mov %ecx,0x8(%esp)
0xbb93eb5e <+2062>: mov %esi,0x4(%esp)
0xbb93eb62 <+2066>: mov -0x474(%ebp),%eax
0xbb93eb68 <+2072>: mov %eax,(%esp)
0xbb93eb6b <+2075>: call 0xbb89683c <_strlcpy@plt>
0xbb93eb70 <+2080>: xor %eax,%eax
0xbb93eb72 <+2082>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93eb77 <+2087>: movzbl 0x9(%esi),%eax
0xbb93eb7b <+2091>: and $0xc0,%eax
0xbb93eb80 <+2096>: add $0xffffff80,%eax
0xbb93eb83 <+2099>: jne 0xbb93e8b3 <getpeername+1379>
0xbb93eb89 <+2105>: jmp 0xbb93ea00 <getpeername+1712>
0xbb93eb8e <+2110>: call 0xbb896adc <__stack_chk_fail_local@plt>
0xbb93eb93 <+2115>: mov $0x8,%eax
0xbb93eb98 <+2120>: testb $0x4,0x18(%ebp)
0xbb93eb9c <+2124>: jne 0xbb93e7b4 <getpeername+1124>
0xbb93eba2 <+2130>: cmp $0x18,%edx
0xbb93eba5 <+2133>: je 0xbb93ebdb <getpeername+2187>
0xbb93eba7 <+2135>: mov 0xc(%ebp),%ecx
0xbb93ebaa <+2138>: mov %ecx,0xc(%esp)
0xbb93ebae <+2142>: mov -0x474(%ebp),%eax
0xbb93ebb4 <+2148>: mov %eax,0x8(%esp)
0xbb93ebb8 <+2152>: mov %edi,0x4(%esp)
0xbb93ebbc <+2156>: mov %edx,(%esp)
0xbb93ebbf <+2159>: call 0xbb89696c <_inet_ntop@plt>
0xbb93ebc4 <+2164>: cmp $0x1,%eax
0xbb93ebc7 <+2167>: sbb %eax,%eax
0xbb93ebc9 <+2169>: and $0xb,%eax
0xbb93ebcc <+2172>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93ebd1 <+2177>: mov $0xb,%eax
0xbb93ebd6 <+2182>: jmp 0xbb93e7b4 <getpeername+1124>
0xbb93ebdb <+2187>: mov 0x18(%ebp),%edx
0xbb93ebde <+2190>: mov %edx,0x8(%esp)
0xbb93ebe2 <+2194>: mov 0xc(%ebp),%ecx
0xbb93ebe5 <+2197>: mov %ecx,0x4(%esp)
0xbb93ebe9 <+2201>: mov -0x474(%ebp),%eax
0xbb93ebef <+2207>: mov %eax,(%esp)
0xbb93ebf2 <+2210>: mov %edi,%edx
0xbb93ebf4 <+2212>: mov %esi,%eax
0xbb93ebf6 <+2214>: call 0xbb93e433 <getpeername+227>
0xbb93ebfb <+2219>: jmp 0xbb93e7b4 <getpeername+1124>
End of assembler dump.
(gdb) f 8
#8 0xb9efef8c in ?? ()
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efe140 0xb9efe140
ebp 0xb9efe5d4 0xb9efe5d4
esi 0xb9efef88 -1175457912
edi 0xb9efef8c -1175457908
eip 0xb9efef8c 0xb9efef8c
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) f 9
#9 0xbb93ec8f in getnameinfo () from /usr/lib/libc.so.12
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb9934f4 -1147587340
esp 0xb9efe5dc 0xb9efe5dc
ebp 0xb9efe634 0xb9efe634
esi 0xb9efef88 -1175457912
edi 0xb9efef8c -1175457908
eip 0xbb93ec8f 0xbb93ec8f <getnameinfo+143>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) disas
Dump of assembler code for function getnameinfo:
0xbb93ec00 <+0>: push %ebp
0xbb93ec01 <+1>: mov %esp,%ebp
0xbb93ec03 <+3>: push %edi
0xbb93ec04 <+4>: push %esi
0xbb93ec05 <+5>: push %ebx
0xbb93ec06 <+6>: sub $0x4c,%esp
0xbb93ec09 <+9>: call 0xbb93ec0e <getnameinfo+14>
0xbb93ec0e <+14>: pop %ebx
0xbb93ec0f <+15>: add $0x548e6,%ebx
0xbb93ec15 <+21>: mov 0x8(%ebp),%esi
0xbb93ec18 <+24>: mov 0x10(%ebp),%edx
0xbb93ec1b <+27>: mov 0x18(%ebp),%eax
0xbb93ec1e <+30>: mov %eax,-0x2c(%ebp)
0xbb93ec21 <+33>: mov -0x318(%ebx),%ecx
0xbb93ec27 <+39>: mov (%ecx),%eax
0xbb93ec29 <+41>: mov %eax,-0x1c(%ebp)
0xbb93ec2c <+44>: xor %eax,%eax
0xbb93ec2e <+46>: movzbl 0x1(%esi),%eax
0xbb93ec32 <+50>: cmp $0x10,%al
0xbb93ec34 <+52>: je 0xbb93ecef <getnameinfo+239>
0xbb93ec3a <+58>: ja 0xbb93ec5e <getnameinfo+94>
0xbb93ec3c <+60>: cmp $0x2,%al
0xbb93ec3e <+62>: je 0xbb93ec66 <getnameinfo+102>
0xbb93ec40 <+64>: mov $0x5,%eax
0xbb93ec45 <+69>: mov -0x318(%ebx),%edx
0xbb93ec4b <+75>: mov -0x1c(%ebp),%ecx
0xbb93ec4e <+78>: xor (%edx),%ecx
0xbb93ec50 <+80>: jne 0xbb93ef60 <getnameinfo+864>
0xbb93ec56 <+86>: add $0x4c,%esp
0xbb93ec59 <+89>: pop %ebx
0xbb93ec5a <+90>: pop %esi
0xbb93ec5b <+91>: pop %edi
0xbb93ec5c <+92>: pop %ebp
0xbb93ec5d <+93>: ret
0xbb93ec5e <+94>: cmp $0x12,%al
0xbb93ec60 <+96>: je 0xbb93ec91 <getnameinfo+145>
0xbb93ec62 <+98>: cmp $0x18,%al
0xbb93ec64 <+100>: jne 0xbb93ec40 <getnameinfo+64>
0xbb93ec66 <+102>: mov 0x20(%ebp),%eax
0xbb93ec69 <+105>: mov %eax,0x10(%esp)
0xbb93ec6d <+109>: mov 0x1c(%ebp),%eax
0xbb93ec70 <+112>: mov %eax,0xc(%esp)
0xbb93ec74 <+116>: mov -0x2c(%ebp),%ecx
0xbb93ec77 <+119>: mov %ecx,0x8(%esp)
0xbb93ec7b <+123>: mov 0x14(%ebp),%eax
0xbb93ec7e <+126>: mov %eax,0x4(%esp)
0xbb93ec82 <+130>: mov %edx,(%esp)
---Type <return> to continue, or q <return> to quit---
0xbb93ec85 <+133>: mov 0xc(%ebp),%edx
0xbb93ec88 <+136>: mov %esi,%eax
0xbb93ec8a <+138>: call 0xbb93e741 <getpeername+1009>
=> 0xbb93ec8f <+143>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93ec91 <+145>: mov -0x2c(%ebp),%edi
0xbb93ec94 <+148>: test %edi,%edi
0xbb93ec96 <+150>: je 0xbb93eca5 <getnameinfo+165>
0xbb93ec98 <+152>: mov 0x1c(%ebp),%ecx
0xbb93ec9b <+155>: test %ecx,%ecx
0xbb93ec9d <+157>: je 0xbb93eca5 <getnameinfo+165>
0xbb93ec9f <+159>: mov -0x2c(%ebp),%ecx
0xbb93eca2 <+162>: movb $0x0,(%ecx)
0xbb93eca5 <+165>: movzbl 0x5(%esi),%eax
0xbb93eca9 <+169>: test %al,%al
0xbb93ecab <+171>: jne 0xbb93ecb8 <getnameinfo+184>
0xbb93ecad <+173>: cmpw $0x0,0x6(%esi)
0xbb93ecb2 <+178>: je 0xbb93ee2c <getnameinfo+556>
0xbb93ecb8 <+184>: movzbl 0x4(%esi),%ecx
0xbb93ecbc <+188>: cmp $0x90,%cl
0xbb93ecbf <+191>: je 0xbb93eda9 <getnameinfo+425>
0xbb93ecc5 <+197>: cmp $0xce,%cl
0xbb93ecc8 <+200>: je 0xbb93edd3 <getnameinfo+467>
0xbb93ecce <+206>: movzbl 0x6(%esi),%ecx
0xbb93ecd2 <+210>: movzbl %al,%eax
0xbb93ecd5 <+213>: lea 0x8(%esi,%eax,1),%eax
0xbb93ecd9 <+217>: mov 0x14(%ebp),%esi
0xbb93ecdc <+220>: mov %esi,0x4(%esp)
0xbb93ece0 <+224>: mov %edx,(%esp)
0xbb93ece3 <+227>: mov %ecx,%edx
0xbb93ece5 <+229>: call 0xbb93e370 <getpeername+32>
0xbb93ecea <+234>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93ecef <+239>: mov -0x2c(%ebp),%edi
0xbb93ecf2 <+242>: test %edi,%edi
0xbb93ecf4 <+244>: je 0xbb93ecfd <getnameinfo+253>
0xbb93ecf6 <+246>: mov 0x1c(%ebp),%ecx
0xbb93ecf9 <+249>: test %ecx,%ecx
0xbb93ecfb <+251>: jne 0xbb93ed5d <getnameinfo+349>
0xbb93ecfd <+253>: movzbl 0x6(%esi),%ecx
0xbb93ed01 <+257>: movzwl 0x4(%esi),%eax
0xbb93ed05 <+261>: ror $0x8,%ax
0xbb93ed09 <+265>: mov %ecx,0x10(%esp)
0xbb93ed0d <+269>: movzwl %ax,%eax
0xbb93ed10 <+272>: mov %eax,0xc(%esp)
0xbb93ed14 <+276>: lea -0xb53d(%ebx),%eax
0xbb93ed1a <+282>: mov %eax,0x8(%esp)
0xbb93ed1e <+286>: mov 0x14(%ebp),%ecx
0xbb93ed21 <+289>: mov %ecx,0x4(%esp)
0xbb93ed25 <+293>: mov %edx,(%esp)
---Type <return> to continue, or q <return> to quit---
0xbb93ed28 <+296>: mov %edx,-0x34(%ebp)
0xbb93ed2b <+299>: call 0xbb89544c <snprintf@plt>
0xbb93ed30 <+304>: mov %eax,%edi
0xbb93ed32 <+306>: test %eax,%eax
0xbb93ed34 <+308>: mov -0x34(%ebp),%edx
0xbb93ed37 <+311>: js 0xbb93ed42 <getnameinfo+322>
0xbb93ed39 <+313>: cmp %eax,0x14(%ebp)
0xbb93ed3c <+316>: ja 0xbb93ee63 <getnameinfo+611>
0xbb93ed42 <+322>: xor %edi,%edi
0xbb93ed44 <+324>: test %edx,%edx
0xbb93ed46 <+326>: je 0xbb93ed9f <getnameinfo+415>
0xbb93ed48 <+328>: mov 0x14(%ebp),%eax
0xbb93ed4b <+331>: test %eax,%eax
0xbb93ed4d <+333>: je 0xbb93ed9f <getnameinfo+415>
0xbb93ed4f <+335>: movb $0x0,(%edx,%edi,1)
0xbb93ed53 <+339>: mov $0x6,%eax
0xbb93ed58 <+344>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93ed5d <+349>: movzbl 0x2(%esi),%eax
0xbb93ed61 <+353>: mov %eax,0xc(%esp)
0xbb93ed65 <+357>: lea -0xad85(%ebx),%eax
0xbb93ed6b <+363>: mov %eax,0x8(%esp)
0xbb93ed6f <+367>: movl $0x8,0x4(%esp)
0xbb93ed77 <+375>: lea -0x24(%ebp),%ecx
0xbb93ed7a <+378>: mov %ecx,-0x30(%ebp)
0xbb93ed7d <+381>: mov %ecx,(%esp)
0xbb93ed80 <+384>: mov %edx,-0x34(%ebp)
0xbb93ed83 <+387>: call 0xbb89544c <snprintf@plt>
0xbb93ed88 <+392>: xor %eax,%eax
0xbb93ed8a <+394>: mov $0xffffffff,%ecx
0xbb93ed8f <+399>: mov -0x30(%ebp),%edi
0xbb93ed92 <+402>: repnz scas %es:(%edi),%al
0xbb93ed94 <+404>: not %ecx
0xbb93ed96 <+406>: cmp %ecx,0x1c(%ebp)
0xbb93ed99 <+409>: jae 0xbb93eefd <getnameinfo+765>
0xbb93ed9f <+415>: mov $0x6,%eax
0xbb93eda4 <+420>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93eda9 <+425>: cmpb $0x7,0x6(%esi)
0xbb93edad <+429>: jbe 0xbb93ec40 <getnameinfo+64>
0xbb93edb3 <+435>: movzbl %al,%eax
0xbb93edb6 <+438>: lea 0x8(%esi,%eax,1),%eax
0xbb93edba <+442>: mov 0x14(%ebp),%esi
0xbb93edbd <+445>: mov %esi,0x4(%esp)
0xbb93edc1 <+449>: mov %edx,(%esp)
0xbb93edc4 <+452>: mov $0x8,%edx
0xbb93edc9 <+457>: call 0xbb93e370 <getpeername+32>
0xbb93edce <+462>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93edd3 <+467>: cmpb $0x1,0x6(%esi)
0xbb93edd7 <+471>: jbe 0xbb93ec40 <getnameinfo+64>
---Type <return> to continue, or q <return> to quit---
0xbb93eddd <+477>: movzbl %al,%eax
0xbb93ede0 <+480>: movzbl 0x9(%esi,%eax,1),%ecx
0xbb93ede5 <+485>: test %cl,%cl
0xbb93ede7 <+487>: je 0xbb93eed0 <getnameinfo+720>
0xbb93eded <+493>: movsbl 0x8(%esi,%eax,1),%eax
0xbb93edf2 <+498>: mov %eax,0x10(%esp)
0xbb93edf6 <+502>: movsbl %cl,%ecx
0xbb93edf9 <+505>: mov %ecx,0xc(%esp)
0xbb93edfd <+509>: lea -0xb53d(%ebx),%eax
0xbb93ee03 <+515>: mov %eax,0x8(%esp)
0xbb93ee07 <+519>: mov 0x14(%ebp),%ecx
0xbb93ee0a <+522>: mov %ecx,0x4(%esp)
0xbb93ee0e <+526>: mov %edx,(%esp)
0xbb93ee11 <+529>: mov %edx,-0x34(%ebp)
0xbb93ee14 <+532>: call 0xbb89544c <snprintf@plt>
0xbb93ee19 <+537>: mov -0x34(%ebp),%edx
0xbb93ee1c <+540>: test %eax,%eax
0xbb93ee1e <+542>: js 0xbb93ee5b <getnameinfo+603>
0xbb93ee20 <+544>: cmp %eax,0x14(%ebp)
0xbb93ee23 <+547>: jbe 0xbb93ee5b <getnameinfo+603>
0xbb93ee25 <+549>: xor %eax,%eax
0xbb93ee27 <+551>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93ee2c <+556>: movzwl 0x2(%esi),%eax
0xbb93ee30 <+560>: mov %eax,0xc(%esp)
0xbb93ee34 <+564>: lea -0xad82(%ebx),%eax
0xbb93ee3a <+570>: mov %eax,0x8(%esp)
0xbb93ee3e <+574>: mov 0x14(%ebp),%esi
0xbb93ee41 <+577>: mov %esi,0x4(%esp)
0xbb93ee45 <+581>: mov %edx,(%esp)
0xbb93ee48 <+584>: mov %edx,-0x34(%ebp)
0xbb93ee4b <+587>: call 0xbb89544c <snprintf@plt>
0xbb93ee50 <+592>: test %eax,%eax
0xbb93ee52 <+594>: mov -0x34(%ebp),%edx
0xbb93ee55 <+597>: js 0xbb93ee5b <getnameinfo+603>
0xbb93ee57 <+599>: cmp %eax,%esi
0xbb93ee59 <+601>: jae 0xbb93ee25 <getnameinfo+549>
0xbb93ee5b <+603>: movb $0x0,(%edx)
0xbb93ee5e <+606>: jmp 0xbb93ed9f <getnameinfo+415>
0xbb93ee63 <+611>: movzbl 0x8(%esi),%eax
0xbb93ee67 <+615>: test %al,%al
0xbb93ee69 <+617>: jne 0xbb93ef1e <getnameinfo+798>
0xbb93ee6f <+623>: movzwl 0xa(%esi),%ecx
0xbb93ee73 <+627>: test %cx,%cx
0xbb93ee76 <+630>: je 0xbb93ee25 <getnameinfo+549>
0xbb93ee78 <+632>: movzwl 0xc(%esi),%eax
0xbb93ee7c <+636>: ror $0x8,%ax
0xbb93ee80 <+640>: ror $0x8,%cx
0xbb93ee84 <+644>: movzwl %ax,%eax
---Type <return> to continue, or q <return> to quit---
0xbb93ee87 <+647>: mov %eax,0x10(%esp)
0xbb93ee8b <+651>: movzwl %cx,%ecx
0xbb93ee8e <+654>: mov %ecx,0xc(%esp)
0xbb93ee92 <+658>: lea -0xad91(%ebx),%eax
0xbb93ee98 <+664>: mov %eax,0x8(%esp)
0xbb93ee9c <+668>: mov 0x14(%ebp),%eax
0xbb93ee9f <+671>: sub %edi,%eax
0xbb93eea1 <+673>: mov %eax,0x4(%esp)
0xbb93eea5 <+677>: lea (%edx,%edi,1),%eax
0xbb93eea8 <+680>: mov %eax,(%esp)
0xbb93eeab <+683>: mov %edx,-0x34(%ebp)
0xbb93eeae <+686>: call 0xbb89544c <snprintf@plt>
0xbb93eeb3 <+691>: test %eax,%eax
0xbb93eeb5 <+693>: mov -0x34(%ebp),%edx
0xbb93eeb8 <+696>: js 0xbb93ed44 <getnameinfo+324>
0xbb93eebe <+702>: add %edi,%eax
0xbb93eec0 <+704>: cmp %eax,0x14(%ebp)
0xbb93eec3 <+707>: jbe 0xbb93ed44 <getnameinfo+324>
0xbb93eec9 <+713>: xor %eax,%eax
0xbb93eecb <+715>: jmp 0xbb93ec45 <getnameinfo+69>
0xbb93eed0 <+720>: movsbl 0x8(%esi,%eax,1),%eax
0xbb93eed5 <+725>: mov %eax,0xc(%esp)
0xbb93eed9 <+729>: lea -0xad85(%ebx),%eax
0xbb93eedf <+735>: mov %eax,0x8(%esp)
0xbb93eee3 <+739>: mov 0x14(%ebp),%eax
0xbb93eee6 <+742>: mov %eax,0x4(%esp)
0xbb93eeea <+746>: mov %edx,(%esp)
0xbb93eeed <+749>: mov %edx,-0x34(%ebp)
0xbb93eef0 <+752>: call 0xbb89544c <snprintf@plt>
0xbb93eef5 <+757>: mov -0x34(%ebp),%edx
0xbb93eef8 <+760>: jmp 0xbb93ee1c <getnameinfo+540>
0xbb93eefd <+765>: mov 0x1c(%ebp),%eax
0xbb93ef00 <+768>: mov %eax,0x8(%esp)
0xbb93ef04 <+772>: mov -0x30(%ebp),%ecx
0xbb93ef07 <+775>: mov %ecx,0x4(%esp)
0xbb93ef0b <+779>: mov -0x2c(%ebp),%eax
0xbb93ef0e <+782>: mov %eax,(%esp)
0xbb93ef11 <+785>: call 0xbb89683c <_strlcpy@plt>
0xbb93ef16 <+790>: mov -0x34(%ebp),%edx
0xbb93ef19 <+793>: jmp 0xbb93ecfd <getnameinfo+253>
0xbb93ef1e <+798>: movzbl %al,%eax
0xbb93ef21 <+801>: mov %eax,0xc(%esp)
0xbb93ef25 <+805>: lea -0xad9b(%ebx),%eax
0xbb93ef2b <+811>: mov %eax,0x8(%esp)
0xbb93ef2f <+815>: mov 0x14(%ebp),%eax
0xbb93ef32 <+818>: sub %edi,%eax
0xbb93ef34 <+820>: mov %eax,0x4(%esp)
0xbb93ef38 <+824>: lea (%edx,%edi,1),%eax
---Type <return> to continue, or q <return> to quit---
0xbb93ef3b <+827>: mov %eax,(%esp)
0xbb93ef3e <+830>: call 0xbb89544c <snprintf@plt>
0xbb93ef43 <+835>: test %eax,%eax
0xbb93ef45 <+837>: mov -0x34(%ebp),%edx
0xbb93ef48 <+840>: js 0xbb93ed44 <getnameinfo+324>
0xbb93ef4e <+846>: add %edi,%eax
0xbb93ef50 <+848>: cmp %eax,0x14(%ebp)
0xbb93ef53 <+851>: jbe 0xbb93ed44 <getnameinfo+324>
0xbb93ef59 <+857>: mov %eax,%edi
0xbb93ef5b <+859>: jmp 0xbb93ee6f <getnameinfo+623>
0xbb93ef60 <+864>: call 0xbb896adc <__stack_chk_fail_local@plt>
End of assembler dump.
(gdb) f 10
#10 0xbb82b0a6 in nogvl_getnameinfo (arg=0xb9efe6ec) at raddrinfo.c:202
202 return getnameinfo(ptr->sa, ptr->salen,
(gdb) info registers
eax 0xbb996da4 -1147572828
ecx 0x1 1
edx 0x0 0
ebx 0xbb8332e4 -1149029660
esp 0xb9efe63c 0xb9efe63c
ebp 0xb9efe694 0xb9efe694
esi 0xb9efeb40 -1175459008
edi 0x400 1024
eip 0xbb82b0a6 0xbb82b0a6 <nogvl_getnameinfo+112>
eflags 0x210202 [ IF RF ID ]
cs 0x17 23
ss 0x1f 31
ds 0x1f 31
es 0x1f 31
fs *value not available*
gs *value not available*
(gdb) rp arg
T_HASH: len=0 $2 = (struct RHash *) 0xb9efe6ec
(gdb) l
197
198 static VALUE
199 nogvl_getnameinfo(void *arg)
200 {
201 struct getnameinfo_arg *ptr = arg;
202 return getnameinfo(ptr->sa, ptr->salen,
203 ptr->host, (socklen_t)ptr->hostlen,
204 ptr->serv, (socklen_t)ptr->servlen,
205 ptr->flags);
206 }
(gdb) p *ptr
$3 = {sa = 0xb9efef88, salen = 16, host = 0xb9efeb40 "", hostlen = 1024, serv = 0x0, servlen = 0,
flags = 0}
(gdb) disas
Dump of assembler code for function nogvl_getnameinfo:
0xbb82b036 <+0>: push %ebp
0xbb82b037 <+1>: mov %esp,%ebp
0xbb82b039 <+3>: push %edi
0xbb82b03a <+4>: push %esi
0xbb82b03b <+5>: push %ebx
0xbb82b03c <+6>: sub $0x4c,%esp
0xbb82b03f <+9>: call 0xbb82b044 <nogvl_getnameinfo+14>
0xbb82b044 <+14>: pop %ebx
0xbb82b045 <+15>: add $0x82a0,%ebx
0xbb82b04b <+21>: mov 0x8(%ebp),%eax
0xbb82b04e <+24>: mov %eax,-0x1c(%ebp)
0xbb82b051 <+27>: mov -0x1c(%ebp),%eax
0xbb82b054 <+30>: mov 0x18(%eax),%ecx
0xbb82b057 <+33>: mov -0x1c(%ebp),%eax
0xbb82b05a <+36>: mov 0x14(%eax),%eax
0xbb82b05d <+39>: mov %eax,-0x2c(%ebp)
0xbb82b060 <+42>: mov -0x1c(%ebp),%eax
0xbb82b063 <+45>: mov 0x10(%eax),%eax
0xbb82b066 <+48>: mov %eax,-0x30(%ebp)
0xbb82b069 <+51>: mov -0x1c(%ebp),%eax
0xbb82b06c <+54>: mov 0xc(%eax),%edi
0xbb82b06f <+57>: mov -0x1c(%ebp),%eax
0xbb82b072 <+60>: mov 0x8(%eax),%esi
0xbb82b075 <+63>: mov -0x1c(%ebp),%eax
0xbb82b078 <+66>: mov 0x4(%eax),%edx
0xbb82b07b <+69>: mov -0x1c(%ebp),%eax
0xbb82b07e <+72>: mov (%eax),%eax
0xbb82b080 <+74>: mov %ecx,0x18(%esp)
0xbb82b084 <+78>: mov -0x2c(%ebp),%ecx
0xbb82b087 <+81>: mov %ecx,0x14(%esp)
0xbb82b08b <+85>: mov -0x30(%ebp),%ecx
0xbb82b08e <+88>: mov %ecx,0x10(%esp)
0xbb82b092 <+92>: mov %edi,0xc(%esp)
0xbb82b096 <+96>: mov %esi,0x8(%esp)
0xbb82b09a <+100>: mov %edx,0x4(%esp)
0xbb82b09e <+104>: mov %eax,(%esp)
0xbb82b0a1 <+107>: call 0xbb8107bc <getnameinfo@plt>
=> 0xbb82b0a6 <+112>: add $0x4c,%esp
0xbb82b0a9 <+115>: pop %ebx
0xbb82b0aa <+116>: pop %esi
0xbb82b0ab <+117>: pop %edi
0xbb82b0ac <+118>: pop %ebp
0xbb82b0ad <+119>: ret
End of assembler dump.
@nurse
Copy link
Author

nurse commented May 14, 2012

下記のパッチで segv しなくなったが何でかわからん

Index: lib/libc/net/gethnamaddr.c
===================================================================
RCS file: /cvsroot/src/lib/libc/net/gethnamaddr.c,v
retrieving revision 1.78
diff -u -r1.78 gethnamaddr.c
--- lib/libc/net/gethnamaddr.c      13 Mar 2012 21:13:40 -0000      1.78
+++ lib/libc/net/gethnamaddr.c      14 May 2012 20:53:26 -0000
@@ -742,11 +742,11 @@
    char *cp, **q;
    int af, len;

+ again:
    if (!hostf && !(hostf = fopen(_PATH_HOSTS, "re"))) {
            h_errno = NETDB_INTERNAL;
            return NULL;
    }
- again:
    if (!(p = fgets(hostbuf, (int)sizeof hostbuf, hostf))) {
            h_errno = HOST_NOT_FOUND;
            return NULL;

@nurse
Copy link
Author

nurse commented May 15, 2012

nsdispatch 側の問題ぽい?
https://twitter.com/_enami/status/202274934876155904

Index: lib/libc/net/nsdispatch.c
===================================================================
RCS file: /cvsroot/src/lib/libc/net/nsdispatch.c,v
retrieving revision 1.37
diff -u -r1.37 nsdispatch.c
--- lib/libc/net/nsdispatch.c       13 Mar 2012 21:13:42 -0000      1.37
+++ lib/libc/net/nsdispatch.c       15 May 2012 05:59:09 -0000
@@ -646,7 +646,7 @@
            return (NS_UNAVAIL);
    }

-   rwlock_rdlock(&_nslock);
+   rwlock_wrlock(&_nslock);

    key.name = database;
    dbt = bsearch(&key, _nsmap, _nsmapsize, sizeof(*_nsmap), _nsdbtcmp);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment