Hi Roland, RTC is depended on libc.so for various reason. In this case, it tries to locate an special instruction (lcall, sysenter or syscall) but fail to find one. A workaround is to include functions like close(), sigpending() or setuid() in your customized libc and make sure one of these instructions is used in those functions.
-Leonard Roland Mainz wrote On 06/03/06 17:45,: >Hi! > >---- > >This is slightly offtopic, but due lack of a dbx-related mailinglist and >because it happens while debugging ksh93 I am dropping it here for now: > >While trying to debug ksh93 with "check -leaks" and/or "check -memuse" >dbx (version "Sun Dbx Debugger 7.4 117845-01 2005/03/05") simply crashes >like this: >-- snip -- >% env - SHELL=$SHELL TERM=$TERM HOME=$HOME EDITOR=$EDITOR >/opt/onbld/bin/bldenv ./opensolaris.sh ># build the OS/Net B37 tree where ksh93 has been integrated >% cd /home/test001/ksh93/on_build1/test1/usr/src/lib/libshell ># run dbx like this: >% (LD_LIBRARY_PATH=$ROOT/lib dbx ../../cmd/ksh/i386/ksh) >(dbx) check -memuse >(dbx) run -o emacs >run -o emacs >Running: ksh -o emacs >(process id 19500) >Reading rtcapihook.so >Reading libdl.so.1 >Reading rtcaudit.so >Reading libmapmalloc.so.1 >Reading libgen.so.1 >Reading rtcboot.so >Reading librtc.so >RTC: Enabling Error Checking... >dbx: can't find a system call entry point -- program not linked with >libc? > >dbx: internal error: signal SIGSEGV (no mapping at the fault address) >dbx's coredump will appear in /tmp >dbx: internal warning: BptMgr::bpt_takeout. bpt 0xb81761d0 not in bpt >list >Abort (core dumped) >-- snip -- > >Uhm... OK... something went horribly wrong with dbx... ;-( > >The contents of the core dump look like this: >-- snip -- >% echo "where" | dbx /opt/SUNWspro/bin/dbx /tmp/core >For information about new features see `help changes' >To remove this message, put `dbxenv suppress_startup_message 7.4' in >your .dbxrc >Reading dbx >core file header read successfully >Reading ld.so.1 >Reading libintl.so.1 >Reading libnsl.so.1 >Reading libsocket.so.1 >Reading libdl.so.1 >Reading libgen.so.1 >Reading libw.so.1 >Reading libm.so.1 >Reading libc.so.1 >Reading libcpc.so.1 >Reading libpctx.so.1 >Reading libnvpair.so.1 >Reading libproc.so.1 >Reading librtld_db.so.1 >Reading libelf.so.1 >Reading libctf.so.1 >Reading libmp.so.2 >Reading libmd5.so.1 >Reading libscf.so.1 >Reading libuutil.so.1 >Reading libc_db.so.1 >program terminated by signal ABRT (Abort) >0xd2e18c07: __lwp_kill+0x0007: jae __lwp_kill+0x15 [ >0xd2e18c15, .+0xe ] >=>[1] __lwp_kill(0x1, 0x6), at 0xd2e18c07 > [2] _pthread_kill(0x1, 0x6), at 0xd2e160a2 > [3] raise(0x6), at 0xd2dddff9 > [4] abort(0xd2e619a0, 0x8046b08, 0xd2e5e000, 0x0, 0x0, 0x0), at >0xd2dc01e4 > [5] 0x80f2259(0xb, 0x8046d68, 0x8046b68), at 0x80f2258 > [6] __sighndlr(0xb, 0x8046d68, 0x8046b68, 0x80f208c), at 0xd2e17fbf > ---- called from signal handler with signal 11 (SIGSEGV) ------ > [7] RegSet::getl(0x0, 0x83e01dc), at 0x82c0965 > [8] RetRegs::getl(0x8046e40), at 0x81a914c > [9] RtcMgr::call_rtc_init(0x845baa0, 0x87e5940, 0x0, 0x0, 0x8046ef4, >0x82030fc), at 0x81aecd7 > [10] RtcMgr::rtc_new_process(0x845baa0), at 0x81abaa6 > [11] RtcMgr::try_rtc_new_process(0x845baa0), at 0x81aa9f8 > [12] 0x81aa6c9(0x8463390, 0x8725140, 0x0), at 0x81aa6c8 > [13] 0x80fc18c(0x88f24f0, 0x8463390, 0x88f1fc0, 0x8725140, 0x1), at >0x80fc18b > [14] ActionList_execute(0x88f1550, 0x8463390, 0x88f1fc0, 0x8725140, >0x1), at 0x80fa840 > [15] Handler::decision_procedure(0x88f1fc0, 0x8463390), at 0x816954c > [16] Recognizer::trigger(0x88f1fc0, 0x8463390), at 0x81a68f9 > [17] Recognizer::dispatch(0x8373f98, 0x8463390), at 0x81a6d74 > [18] Proc::vcpu_dispatch(0x8463390, 0x8479998), at 0x819cd1b > [19] Proc::pervcpu_dispatch(0x8463390, 0x83a7f80), at 0x819cec9 > [20] Proc::generic_dispatch(0x8463390, 0x83a7f80), at 0x819d4ab > [21] Proc::go(0x8463390, 0x83a7f80, 0x1, 0x1), at 0x819d968 > [22] do_run(0x845d678, 0x0, 0x1), at 0x8178ad6 > [23] 0x8178dbd(0x845d678, 0x3, 0x8724df0, 0x0), at 0x8178dbc > [24] 0x825945b(0x845d678, 0x84639f8, 0x8724cc8, 0x8724df0, 0x0), at >0x825945a > [25] pdksh_execute(0x845d678, 0x84639f8, 0x0), at 0x825868d > [26] pdksh_shell(0x845d678, 0x84637c8), at 0x824ad43 > [27] main_cmd_loop(0x845d678), at 0x80f5153 > [28] main(0x2, 0x804733c, 0x8047348), at 0x80f5d86 >-- snip -- > >My guess is that this is partially the result that there is a "custom" >libc (build from B37 sources on a B37 system - in theory this should be >no difference - but in reality it seems to matter... somehow... ;-( ) >... a quick look at the "ldd" output shows this: >-- snip -- >% (LD_LIBRARY_PATH=$ROOT/lib ldd /opt/SUNWspro/bin/dbx) > libintl.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libintl.so.1 > libnsl.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libnsl.so.1 > libsocket.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libsocket.so.1 > libdl.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libdl.so.1 > libgen.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libgen.so.1 > libw.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libw.so.1 > libm.so.1 => /lib/libm.so.1 > libc.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libc.so.1 > libmp.so.2 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libmp.so.2 > libmd5.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libmd5.so.1 > libscf.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libscf.so.1 > libuutil.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libuutil.so.1 > libm.so.2 => /lib/libm.so.2 >-- snip -- > >I then removed all duplicate libraries that dbx only uses those binaries >shipped on the B37 DVD, resulting in the following "ldd" output: >-- snip -- >% (LD_LIBRARY_PATH=$ROOT/lib ldd /opt/SUNWspro/bin/dbx) >libintl.so.1 => /lib/libintl.so.1 > libnsl.so.1 => /lib/libnsl.so.1 > libsocket.so.1 => /lib/libsocket.so.1 > libdl.so.1 => >/home/test001/ksh93/on_build1/test1/proto/root_i386/lib/libdl.so.1 > libgen.so.1 => /lib/libgen.so.1 > libw.so.1 => /lib/libw.so.1 > libm.so.1 => /lib/libm.so.1 > libc.so.1 => /lib/libc.so.1 > libmp.so.2 => /lib/libmp.so.2 > libmd5.so.1 => /lib/libmd5.so.1 > libscf.so.1 => /lib/libscf.so.1 > libuutil.so.1 => /lib/libuutil.so.1 > libm.so.2 => /lib/libm.so.2 >-- snip -- > >Finally I tried to re-run dbx like this: >-- snip -- >% (LD_LIBRARY_PATH=$ROOT/lib dbx ../../cmd/ksh/i386/ksh) >For information about new features see `help changes' >To remove this message, put `dbxenv suppress_startup_message 7.4' in >your .dbxrc >Reading ksh >Reading ld.so.1 >Reading libshell.so.1 >Reading libast.so.1 >Reading libsecdb.so.1 >Reading libm.so.2 >Reading libc.so.1 >Reading libcmd.so.1 >Reading libdll.so.1 >Reading libsocket.so.1 >Reading libnsl.so.1 >(dbx) check -leaks >leaks checking - ON >(dbx) run -o emacs >Running: ksh -o emacs >(process id 19535) >Reading rtcapihook.so >Reading libdl.so.1 >Reading rtcaudit.so >Reading libmapmalloc.so.1 >Reading libgen.so.1 >Reading rtcboot.so >Reading librtc.so >RTC: Enabling Error Checking... >signal SEGV (no mapping at the fault address) in evfind at 0xc710d4fa >0xc710d4fa: evfind+0x003a: movl (%eax,%edx,4),%eax >dbx: Stopped within call to '__rtc_init'. Starting new command >interpreter >(dbx) exit >-- snip -- >... and again no success... ;-( > >Does anyone have a suggestion what I can do at this point to get "dbx"'s >"check -leaks / -memuse" functionality working on i386 ? > >---- > >Bye, >Roland > > >
