> > Yes i did thought in that angle so far thank for
> reminiding . Since
> > the application is real-time in nature and runs
> continoulsy ,
> > termiantion is rulled out. Also we are facing
> problem in particular
> > site implemntations at other implentations it runs
> fine.
>
> That just screams for the question, what's different
> between the
> implementations ? Different load, different
> compilation environment,
> different OS versions ? Anything else ?
OS is Solaris 10 and all SPARC based servers but server model no may vary ,
but i am working on Ultra 45 server.
The major difference between where we are facing problem from others is
that it through some API provided by our application external applications
pump in data and allow to collect data from it.
> > > I would try to make libumem work, it should give
> you
> > > the data.
> > >
> > > Not sure if this helps :)
> >
> > this whats i have done to use libumem and mdb ...
> > #UMEM_DEBUG=default;export UMEM_DEBUG=default
> > #UMEM_LOGGING=transaction;export
> UMEM_LOGGING=transaction
> > #LD_PRELOAD=libumem.so.1;export
> LD_PRELOAD=libumem.so.1
> > # ./myapp
> > Generate core from live system with pid
> > #gcore 21250
> > bash-3.00$ mdb core.21250
> > Loading modules: [ libumem.so.1 libc.so.1 ld.so.1 ]
> > > ::findleaks
> > mdb: findleaks: No allocations have occured -- no
> possible leaks.
>
> That's strange, most probably it means that libumem
> wasn't preloaded
> successfully. Any chance that your application links
> the memory
> management library statically ? (maybe you are using
> something else than
> libc ?). Can you run pmap on the generated core file
> ? It should show you few
> memory regions used by libumem. Also you can try in
> mdb
>
> malloc::dis
>
> and you should see
>
> libumem.so.1`malloc: pushl %ebp
> ...
>
> and not
>
> libc.so.1`malloc: pushl %ebp
> ...
>
Here is library linking
# ldd /opt/scada/bin/scadadbproc | grep -i libcrun
libCrun.so.1 => /usr/lib/libCrun.so.1
# ldd /opt/scada/bin/scadadbproc | grep -i umem
libumem.so.1 => /lib/libumem.so.1
Here is ouput of malloc::dis ( its differing from what you are saying )
==================================================================
> malloc::dis
0xb0ab8c: and %o1, 1, %o0
0xb0ab90: or %o0, %g1, %g5
0xb0ab94: st %g5, [%i1 + 4]
0xb0ab98: call +0x7f4 <0xb0b38c>
0xb0ab9c: restore
0xb0aba0: or %g2, 1, %l4
0xb0aba4: st %l4, [%i1 + 4]
0xb0aba8: st %g2, [%g3]
0xb0abac: ret
0xb0abb0: restore
0xb0abb4: save %sp, -0x60, %sp
0xb0abb8: sethi %hi(0x109d800), %i5
0xb0abbc: ld [%i5 + 0x1c], %i4
0xb0abc0: cmp %i4, 0
0xb0abc4: be,pn %icc, +0x14 <0xb0abd8>
0xb0abc8: sethi %hi(0x109d800), %o3
0xb0abcc: ld [%o3 + 0x1c], %o2
0xb0abd0: jmp %o2
0xb0abd4: restore
0xb0abd8: add %i0, 0xb, %o4
0xb0abdc: cmp %o4, 0
Also the make file ouput
==================================================================
/opt/SUNWspro/bin/CC -mt -O -temp=/tmp/ssana -compat=5
-library=iostream scadadbproc.o libsa_dbproc.a `echo
..//scada_lib/common/libsl_common.a ..//scada_lib/appdbobjs/libsl_loadman.a
..//scada_lib/configurator/libsl_configurator_system_views.a
..//scada_lib/configurator/libsl_configurator_commands.a
..//scada_lib/configurator/libsl_configurator_db_forms.a
..//scada_lib/configurator/libsl_configurator_iexport.a
..//scada_lib/configurator/libsl_configurator_install.a
..//scada_lib/configurator/libsl_configurator_windows.a
..//scada_lib/configurator/libsl_configurator_data_fields.a
..//scada_lib/configurator/libsl_configurator_agent.a
..//scada_lib/configurator/libsl_configurator_misc.a
..//scada_lib/configurator/libsl_configurator_ComboBox.a
..//scada_lib/configurator/libsl_dbutility.a
..//scada_lib/calcs/libsl_calcs_runtime.a
..//scada_lib/calcs/libsl_calcs_linker.a
..//scada_lib/calcs/libsl_calcs_compiler_compiler.a
..//scada_lib/calcs/libsl_calcs_debugger.a ..//scad
a_lib/calcs/libsl_calcs_interpreter.a
..//scada_lib/calcs/libsl_calcs_module_parser.a
..//scada_lib/calcs/libsl_calcs_statement_parser.a
..//scada_lib/calcs/libsl_calcs_expression_parser.a
..//scada_lib/calcs/libsl_calcs_types_parser.a
..//scada_lib/calcs/libsl_calcs_dict.a ..//scada_lib/calcs/libsl_calcs_module.a
..//scada_lib/calcs/libsl_calcs_statement.a
..//scada_lib/calcs/libsl_calcs_expression.a
..//scada_lib/calcs/libsl_calcs_connection.a
..//scada_lib/calcs/libsl_calcs_types.a ..//scada_lib/calcs/libsl_calcs_util.a
..//scada_lib/history/libsl_history.a ..//scada_lib/fep/libsl_fep.a
..//scada_lib/fep/libsl_fep_devices.a
..//scada_lib/fep/libsl_fep_file_transfer.a
..//scada_lib/fep/libsl_fep_emulator.a ..//scada_lib/fep/libsl_fep.a
..//scada_lib/fep/libsl_fep_telemetry.a ..//scada_lib/fep/libsl_fep_objects.a
..//scada_lib/fep/libsl_fep_generators.a ..//scada_lib/fep/libsl_fep_stats.a
..//scada_lib/fep/libsl_fep_protocol.a ..//scada_lib/hmi/libsl_hmi_event.a
..//scada_l
ib/hmi/libsl_hmi_object.a ..//scada_lib/hmi/libsl_hmi_alarm.a
..//scada_lib/hmi/libsl_hmi_presenter.a ..//scada_lib/hmi/libsl_hmi_common.a
..//scada_lib/hmi/libsl_hmi_cpp.a ..//scada_lib/core_scada/libsl_core_scada.a
..//scada_lib/core_scada/libsl_core_scada_points.a
..//scada_lib/core_scada/libsl_core_scada_devices.a
..//scada_lib/core_scada/libsl_core_scada_lists.a
..//scada_lib/core_scada/libsl_core_scada_demand_scan.a
..//scada_lib/core_scada/libsl_core_scada_controls.a
..//scada_lib/core_scada/libsl_core_scada_scanning.a
..//scada_lib/core_scada/libsl_core_scada_cvq.a
..//scada_lib/core_scada/libsl_core_scada_ptw.a
..//scada_lib/core_scada/libsl_core_scada_station_monitor.a
..//scada_lib/core_scada/libsl_core_scada_alarm_system.a
..//scada_lib/core_scada/libsl_core_scada_alarm_flatLine.a
..//scada_lib/core_scada/libsl_core_scada_alarm_digital.a
..//scada_lib/core_scada/libsl_core_scada_alarm_analog.a
..//scada_lib/core_scada/libsl_core_scada_alarm_point.a ..//scada_lib/
core_scada/libsl_core_scada_alarm_generic.a
..//scada_lib/core_scada/libsl_core_scada_alarm_common.a
..//scada_lib/hmi/libsl_hmi_event.a ..//scada_lib/hmi/libsl_hmi_object.a
..//scada_lib/hmi/libsl_hmi_alarm.a ..//scada_lib/hmi/libsl_hmi_presenter.a
..//scada_lib/hmi/libsl_hmi_common.a ..//scada_lib/hmi/libsl_hmi_cpp.a
..//scada_lib/dbase/libsl_dbtypes.a ..//scada_lib/dbase/libsl_superagent.a
..//scada_lib/dbase/libsl_logger.a ..//scada_lib/dbase/libsl_thread.a
..//scada_lib/dbase/libsl_stream.a ..//scada_lib/dbase/libsl_interfaces.a
..//scada_lib/dbase/libsl_startupStateMachine.a ..//scada_lib/api/libsl_error.a
..//scada_lib/api/libsl_events.a ..//scada_lib/api/libsl_proxy.a
..//scada_lib/api/libsl_connections.a ..//scada_lib/api/libsl_multicast.a
..//scada_lib/api/libsl_dispatcher.a ..//scada_lib/api/libsl_controls.a
..//scada_lib/api/libsl_histint.a ..//scada_lib/api/libsl_alarmint.a
..//scada_lib/api/libsl_paths.a ..//scada_lib/api/libsl_system.a
..//scada_lib/api/libsl_
value.a ..//scada_lib/utilities/libsl_license.a
..//scada_lib/utilities/libsl_scadatrace.a
..//scada_lib/utilities/libsl_commandline.a ..//versant/vod7010/lib/libcxxcls.a
..//versant/vod7010/lib/liboscfe.a -ldl ..//scada_lib/api/libsl_error.a
..//ose/6.1pl1/SPARC_SOL2/lib/SUN5.7/libOTC_6X1pl01_SUN5X7_opt.a
..//ose/6.1pl1/SPARC_SOL2/lib/SUN5.7/libOSE.a -ldl
[u]..//scada_lib/utilities/libsl_malloc.a[/u] | ..//rules/bin/sed 's=\([^
]*\)/lib\([^ /]*\)\.so=-L\1 -l\2=g'` -L/usr/dt/lib -lXm12
-L..//scada_include/configurator/XDesigner/xpm -lXpm -L/usr/openwin/lib -lXmu
-lXt -lX11 -lXext -lkvm -lelf -lkstat -ldl -Bdynamic -lpthread -lrt -lsocket
-lnsl -library=gc scadadbproc_ccm_executable_version.o -o scadadbproc
===============================================================
> If you run
>
> nm -C yourbinary | less
>
> You should find 'void operator delete(void*)' and
> 'void*operator
> new(unsigned)'. In my case it's __1c2k6Fpv_v_ and
> something else. Again in mdb
> looking at the core file, you should see traces of
> libumem
>
> > __1c2k6Fpv_v_::dis ! grep call
> libCrun.so.1`__1c2k6Fpv_v_+9: call +0x0
> <libCrun.so.1`__1c2k6Fpv_v_+0xe>
> run.so.1`__1c2k6Fpv_v_+0x21:call -0x1efe
> <PLT=libumem.so.1`free>
> ibCrun.so.1`__1c2k6Fpv_v_+0x37:call -0x1f84
> <PLT:__1cG__CrunRex_chk_unexpected6F_v_>
> ibCrun.so.1`__1c2k6Fpv_v_+0x3c:call -0x1f79
> <PLT:__1cG__CrunMex_rethrow_q6F_v_>
>
Here is output from core file
=============================================================
> __1c2k6Fpv_v_::dis ! grep call
libCrun.so.1`__1c2k6Fpv_v_+4: call +0x14780 <0xfebea938>
libCrun.so.1`__1c2k6Fpv_v_+0x14:call +0x1471c
<PLT:__1cG__CrunRex_chk_unexpected6F_v_>
libCrun.so.1`__1c2k6Fpv_v_+0x1c:call +0x14720
<PLT:__1cG__CrunMex_rethrow_q6F_v_>
> __1c2n6FI_pv_::dis ! grep call
libCrun.so.1`__1c2n6FI_pv_+4: call +8
<libCrun.so.1`__1c2n6FI_pv_+0xc>
libCrun.so.1`__1c2n6FI_pv_+0x2c:call +0x138f8 <0xfebea908>
libCrun.so.1`__1c2n6FI_pv_+0x40:call +0x13c20
<PLT:__1cH__CimplPget_new_handler6F_pF_v_>
libCrun.so.1`__1c2n6FI_pv_+0x54:call +0x139f0
<PLT:__1cG__CrunIex_alloc6FI_pv_>
libCrun.so.1`__1c2n6FI_pv_+0x5c:call +0x13c10
<PLT:__1cDstdJbad_alloc2t6M_v_>
libCrun.so.1`__1c2n6FI_pv_+0x70:call +0x139ec
<PLT:__1cG__CrunIex_throw6Fpvpkn0AQstatic_type_info_pF1_v_v_>
libCrun.so.1`__1c2n6FI_pv_+0x98:call +0x13868
<PLT:__1cG__CrunRex_chk_unexpected6F_v_>
libCrun.so.1`__1c2n6FI_pv_+0xa0:call +0x1386c
<PLT:__1cG__CrunMex_rethrow_q6F_v_>
=============================================================
What could be the reason that i am getting no allocation done in mdb,
please let know anything else i am missing ?
>
> > Anything else is missing from my sequence of steps
> ?
>
> Not really.
>
>
> > Do i need to do add anything during compilation ?
>
> I do not think so.
>
> --
> Vlad
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.9 (SunOS)
>
> iEYEARECAAYFAkhON1UACgkQqVN0MVP42YzSJwCfZrUbJ3hOdv7AV9
> 2WN/kICuwe
> 2+MAoIQSfUsrLIG/Gfa8EsEN1shCzVox
> =lzPF
> -----END PGP SIGNATURE-----
> _______________________________________________
> dtrace-discuss mailing list
> [email protected]
--
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
[email protected]