Dbx dumps
Hi,
I have just installed Sun Studio11 for Solaris 10 x86(version 3/5).
It works fine.
BUT :
After loading simple program (squares for example) using debug option in main menu,
three debug windows show up and then error message " dbx terminated (connection with dbx failed with wait(2) errors). So it is not "hanging" of dbx reported elsewhere.
If I start dbx simply in terminal it dumps immediately and produces core.
Nothing has changed after updating the system using UpdateManager(I did not install 2 compiler patches , because it demanded that I remove compiler product, otherwise I updated all) .
Andrzej
core 'core' of 2611: /opt/SUNWspro/bin/dbx -g sync,stdio -c dbxenv suppress_startup_message
d2d23ce6 cpc_close (0) + 14
080f4466 ???????? (0, 1, 186a0, 14, 0, 846d0b8)
080f4600 ???????? (0, 0, d2d90468, 8046d18, 80f199e, 80f1900)
080f467b hwcfuncs_open (80f1900, 837689c, 8428a94, 8428a98, 8428a9c) + 23
080f199e ???????? (6, 846d0b8, 8047184, 8047184, 8202fd6, 8047350)
080f326c hwc_get_cpc_cpuver (8047350, 804724c, 83884c0, 0, 804717c, 6e6b6e75) + 14
08202fd6 __1cJColl_Ctrl2t5B6Mi_v_ (846d0b8, 1) + 11e
08200333 __1cMsp_new_state6FpnGTarget__pnLDbxCollCtrl__ (83884c0) + 27
080f9b42 main (5, 804724c, 8047264) + 13e
080f0e0a _start (5, 80473b8, 80473ce, 80473d1, 80473dc, 80473df) + 7a
Another observation :
In the meantime I have made reinstall of the system using upgrade option.
Reinstall was broken, not all was installed. BUT dbx worked fine !!!!(It was preserved)
After reinstalling with "INITIAL" option system is OK but dbx dumps as before(I have installed sunstudio of course once again).
It could suggest some problems with shared libraries.
Andrzej
Similar Messages
-
Studio 10 dbx dumps core with access checking on
I have an application that causes Studio 10 dbx to dump core on start with access checking turned on. It will run OK under Studio 9 dbx, but tends to kill dbx if I attempt to follow the stack when a violation is found.
For some odd reason, 'suppress rui' does not work with it as well.
What information can I provide to help identify this bug? I expect the application and its build environment are too big to send in.
Cheers,
Ianx86/AMD64 doesn't do access checking, or does it now?
Anyway, here is the pstack:
Cheers, Ian.
core '/tmp/core' of 12721: /opt/studio10/SUNWspro/bin/../prod/bin/sparcv9/dbx sm70/icp/test/sparc
ffffffff7e6a39c0 _kill (ffffffff7e7b0f88, 31b1, 2002, 100532d9d, 100532000, 100532) + 8
00000001000bbaa4 ???????? (10062e, 100400, b, 100400, 100633000, 10053f5e0)
ffffffff7e6a2dfc sigacthandler (b, ffffffff7fff8850, ffffffff7fff8570, b, 3d, 3d000000) + 2c
--- called from signal handler with signal 11 (SIGSEGV) ---
000000010025881c __1cHTypetabHGetType6Mii_pnEType__ (ffffffff7fffe738, 100999670, 100999680, 0, 0, ffffffff7
fffb892) + c
000000010029a01c __1cFStabsQmake_tactarglist6MpcrnHSymlist_pnHObjfile_ibb_2_ (ffffffff7fffe738, 7c, 1, 10099
9670, 0, 0) + 104
000000010029ae90 __1cFStabsZcafe_parse_templ_fun_inst6MpnHObjfile_pnDFun_pc5b_4_ (ffffffff7fffe738, 10099967
0, 1009ba7d0, 1, ffffffff7d340fc2, ffffffff7fffb884) + 24c
0000000100286c60 __1cFStabsIFuncDecl6MpnHObjfile_pnDFun_pcb_4_ (ffffffff7fffe738, 100999670, 1009ba990, 5f,
4c, 1009ba990) + ec
0000000100282828 __1cFStabsSNPatchProcessDebug6MpnHObjfile_pnEstab_pcIIbb_I_ (ffffffff7fffe738, 100999670, f
fffffff7d349e14, ffffffff7d31df38, ffffffff7d34f364, ffffffff7fffe66c) + 1d8
000000010024b478 ???????? (10076b050, 49e14, 0, de6, 0, 1)
000000010024b8d8 ???????? (100999670, ffffffffffffffff, 103955440, 102eb6730, 1, 1)
000000010024b6a8 __1cNReadLazyStabs6FpnHObjfile_bb_v_ (100999670, 10053f000, 1, 1, 10053f5e0, 100400) + e4
00000001001dbae8 __1cGRtcFunTlocate_npatch_sites6M_v_ (103933330, 7, e, 80, 84, 103933330) + 80
00000001001db888 __1cGRtcFunSlocate_patch_sites6ML_i_ (103933330, 51eb8400, ed11ad88, 100999a60, 81c7e008, 1
) + 784
00000001001d6544 __1cKRtcLoadObjRrtc_process_check6Mb_v_ (103933330, 100400, 100983860, 1009c4e70, 100983870
, ffffffffffffffff) + 6fc
00000001001c714c __1cGRtcMgrPrtc_new_process6M_v_ (102c1ae30, 10065a400, 0, 0, 1, 10056fe74) + 80c
00000001001c590c __1cGRtcMgrTtry_rtc_new_process6M_b_ (10065a400, 1005d4d05, 0, 10056f000, 10056f, 10076ac30
) + c
00000001001c5544 ???????? (1, 1029df5a9, 10053f5e0, 10065a400, 5, 1002452c8)
00000001000c7984 __1cSActionList_execute6FpnEList4nGAction___pnEProc_pnHHandler_pnJEventInst_nHLevel_e__v_ (
102d13780, 102cb0340, 102d1e1c0, 102ab71d0, 1, 10053b) + 64
0000000100166a4c __1cHHandlerSdecision_procedure6MpnEProc__v_ (102d1e1c0, 102cb0340, 100558, 100400, 1005585
bc, 102ab71d0) + 158
00000001001bfccc __1cKRecognizerHtrigger6MpnEProc__v_ (102d1e1c0, 102cb0340, 100400, 100581000, 100581ea8, 1
0056c18d) + e8
00000001001c0240 __1cKRecognizerIdispatch6FpnGTarget_pnEProc__v_ (10053f5e0, 102cb0340, 100400, 1, 0, 10064e
370) + 58
00000001001b0c44 __1cEProcNvcpu_dispatch6MpnEVCpu__b_ (102cb0340, 100766070, 1005468d0, 1002182a0, 100769888
, 100645d30) + 384
00000001001b0de8 __1cEProcQpervcpu_dispatch6MpnEVCpu__v_ (102cb0340, 10057c3d0, 102d3bc60, 10057c450, 10057c
3d0, 100569599) + 14c
00000001001b15d4 __1cEProcQgeneric_dispatch6MpnEVCpu__b_ (102cb0340, 10057c458, 100569, 100581000, 10056972b
, 100581) + 1a8
00000001001b1d4c __1cEProcCgo6MpnEVCpu_nGProcGo_b_v_ (102cb0340, 100569, 102be9050, cc4, 100581fe8, 1) + 52c
000000010017ca14 __1cGdo_run6FpnGInterp_bnHLevel_e__i_ (100400, 100568000, 100400, 10053f5e0, 100400, 100400
) + 328
00000001002bbba0 ???????? (1005983f7, 102ab8230, 10065b8d8, 0, 10066f510, 102b487e0)
00000001002ba890 __1cNpdksh_execute6FpnGInterp_pnCop_i_i_ (10065b890, 102c81dc0, 0, 10065b890, 102bcf5a0, 10
3539140) + 1c0
00000001002a710c __1cLpdksh_shell6FpnGInterp_pnGSource__i_ (10065b890, 102cf6280, 100400, 100596d79, 100596d
80, 1000bb4b0) + 4c0
00000001000bfa5c __1cNmain_cmd_loop6FpnGInterp__v_ (10065b890, 100400, 100533d18, 100614178, 100581f10, 1005
33) + a8
00000001000c0a8c main (100400, 100532, 100533d18, 10065b890, 10053f5e0, 1) + b8c
00000001000b409c _start (0, 0, 0, 0, 0, 0) + 17c -
Is there an way to get the value of a local string variable from core dump?
Hi All,
Please help me on this, How to extract the string variable content from the core file.
During core file analysis using dbx, it puts value as CLASS against string local variables.
But I need to know the exact value during the core dump.
I'm able to print other than string variables.
Is this possbile using dbx or is there any other tool can help me on this.
Thanks in advance, please find the code details below:
here is my core details:
(dbx) where -h
current thread: t@74
[1] __lwp_kill(0x0, 0x6, 0x217b8, 0x7f950b94, 0x2, 0x7f0fb944), at 0x7f99fb84
[2] raise(0x6, 0x0, 0x7f0fb958, 0x7f6a5434, 0x1, 0x7f0fb9a4), at 0x7f950b9c
[3] abort(0x7f6bf0f8, 0x4, 0x7f6bf0b8, 0x15360, 0x1, 0x7f6bf0f8), at 0x7f936d10
[4] exregister(0x7f6bf0fc, 0x4, 0x7f6bf0b8, 0x15360, 0x1, 0x7f6a5048), at 0x7f6a504c
[5] exregister(0x7f6bf0f8, 0x7f6a505c, 0x7f6bf0f8, 0x7f6bb080, 0x0, 0x1), at 0x7f6a5060
[6] exregister(0x7f0fbb28, 0x66bd8, 0xe4fd0, 0x7f6bb080, 0x7f6ba780, 0x1), at 0x7f6a4fd8
[7] 0x7f6a5edc(0x7f6bae64, 0x0, 0x66bd8, 0x14cb8, 0x14928, 0x0), at 0x7f6a5edc
=>[8] AreaManager::commitCombine(this = 0xe5234, parsedSetName = CLASS), line 369 in "AreaManager.cc"
[9] TaskDispatcher::combineParsedSet(parsedSetName = CLASS), line 113 in "TaskDispatcher.cc"
[10] CombineExecutor::run(this = 0x1312d8), line 159 in "CombineExecutor.cc"
[11] thread_body(threadObj = 0x1312d8), line 35 in "ThreadUtils.cc"
(dbx)
(dbx) dump
parsedSetName = CLASS
parsedSetCombinedName = CLASS
parserSetBuiltName = CLASS
this = 0xe5234
(dbx)
(dbx) print parsedSetName
dbx: cannot access address 0x7f6690f4
(dbx)
BR//SahooWhen I was running in a higher version, it gives follwing error:
A loadobject was found with an unexpected checksum value.
When using the same core dump binary, the result are different than the locally build binary
This is the error it pointing now:
if ((ptr = (CHAR *) malloc((unsigned int) size)) == NULL)
(dbx) proc -map
Loadobject mappings for current core file:
0x00010000 /usr/omc/1.8.0.0.56/bin/PmLoader
0x7fb80000 /usr/lib/libaio.so.1
0x7fb30000 /usr/lib/libm.so.1
0x7fbfa000 /usr/lib/libdl.so.1
is being filtered by: /usr/lib/ld.so.1
Warning: checksum in file(a5bd) doesn't match image(a5bf)
0x7faf0000 /usr/lib/libelf.so.1
Warning: checksum in file(38a7) doesn't match image(38a9)
0x7fad0000 /usr/lib/libsocket.so.1
0x7fa00000 /usr/lib/libnsl.so.1
0x7f900000 /usr/lib/libc.so.1
is being filtered by: /usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1
Warning: checksum in file(3b8c) doesn't match image(3ec6)
0x7f890000 /usr/informix/lib/esql/libthsql.so
0x7f830000 /usr/informix/lib/libthasf.so
0x7f7b0000 /usr/informix/lib/esql/libthgen.so
0x7f770000 /usr/informix/lib/esql/libthos.so
0x7f700000 /usr/informix/lib/esql/libifgls.so
0x7f9e0000 /usr/informix/lib/esql/libifglx.so
0x7f6d0000 /usr/lib/libthread.so.1
0x7f500000 /usr/lib/libCstd.so.1
Warning: checksum in file(1fc4) doesn't match image(3f67)
0x7f6a0000 /usr/lib/libCrun.so.1
Warning: checksum in file(1a8d) doesn't match image(b1ea)
0x7fba0000 /usr/lib/libw.so.1
is being filtered by: libc.so.1
0x7f4e0000 /usr/lib/libmp.so.2
0x7f4a0000 /usr/lib/cpu/sparcv8plus/libCstd_isa.so.1
Warning: checksum in file(0fc3) doesn't match image(27d6)
0x7f9d0000 /usr/platform/sun4u-us3/lib/libc_psr.so.1
0x7f410000 /usr/lib/nss_files.so.1
0x7fbb0000 /usr/lib/ld.so.1 [LM_ID_LDSO]
Warning: checksum in file(f2f2) doesn't match image(2a40)
dbx ./PmLoader ./core
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.5' in your .dbxrc
Reading PmLoader
core file header read successfully
Reading ld.so.1
Reading libaio.so.1
Reading libm.so.1
Reading libdl.so.1
Reading libelf.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading libc.so.1
Reading libthsql.so
Reading libthasf.so
Reading libthgen.so
Reading libthos.so
Reading libifgls.so
Reading libifglx.so
Reading libthread.so.1
Reading libCstd.so.1
Reading libCrun.so.1
Reading libw.so.1
Reading libmp.so.2
Reading libCstd_isa.so.1
Reading libc_psr.so.1
Reading nss_files.so.1
WARNING!!
A loadobject was found with an unexpected checksum value.
See `help core mismatch' for details, and run `proc -map'
to see what checksum values were expected and found.
dbx: warning: Some symbolic information might be incorrect.
t@1 (l@1) terminated by signal BUS (invalid address alignment)
0x7f947974: t_delete+0x0068: clr [%o1 + 8]
Current function is Malloc
40 if ((ptr = (CHAR *) malloc((unsigned int) size)) == NULL)
(dbx)
(dbx) where -h
current thread: t@1
[1] t_delete(0x17c980, 0x470, 0x1ef778, 0x7f9bc000, 0x0, 0x0), at 0x7f947974
[2] mallocunlocked(0x414, 0x0, 0x0, 0x7f9bc000, 0x0, 0x0), at 0x7f947004
[3] malloc(0x414, 0xebae0, 0x8, 0xffbfc9a8, 0xffbfc9a0, 0x1a3791), at 0x7f946e38
=>[4] Malloc(size = 1044U), line 40 in "Malloc.c"
[5] Drain_Socket(sc = 0x1ab100, fd = 10, block = 0xffbfce44), line 1648 in "ipc_sockio.c"
[6] Sockio_Refresh(instance = 0x1ab100, fd = 10U, readable = 1, writeable = 0, block = 0xffbfce44), line 3465 in "ipc_sockio.c"
[7] do_Refresh(cid = 10U, readable = 1, writeable = 0, block = 0xffbfce44), line 1238 in "ipc_IO.c"
[8] IO_Refresh(block = 0, file_descriptor = -1), line 685 in "ipc_IO.c"
[9] ipc_receive_message(gid = 0xffbfcf88, reply = 0xffbfd080, buffer = 0x11ae08 "", len = 0xffbfcf34, block = 0), line 313 in "ipc_services.c"
[10] IPCProcessor::receiveMessage(this = 0x1172d0, channelID = 2U, pReplyChannelID = 0xffbfd080), line 312 in "IPCProcessor.cc"
[11] IPCProcessor::mainLoop(this = 0x1172d0, pHandler = 0xf9c28), line 203 in "IPCProcessor.cc"
[12] IPCService::mainLoop(pMediator = 0x1172d0, pHandler = 0xf9c28), line 51 in "IPCService.cc"
[13] main(argc = 3, argv = 0xffbfe1f4), line 91 in "PmLoader.cc"
I got another instance of core dump in same m/c
Edited by: chittusun on Nov 5, 2008 5:19 AM -
Critical CoreDumps in our Application Servers with Coherence
Dear Support team,
We are facing few issues with our C++ AppServer binary which are Coherence enabled. We are using the libcoherence.so provided by Oracle. We find the dumps are occuring only when Coherence is enabled and our binary looks good when Coherence is disabled. The below coredump occurred somewhere internally within Coherence, please shed some lights on the below dump and advise.
====================
t@9 (l@9) terminated by signal SEGV (no mapping at the fault address)
Current function is coherence::lang::Object::_attach
641 LifeCycle nState(m_atomicLifeCycle.peek());
(dbx) where
current thread: t@9
=>[1] coherence::lang::Object::_attach(this = 0xf71fb328, fEscaped = true), line 641 in "Object.hpp"
[2] coherence::lang::Object::wait(0x29bfe48, 0xfa63d350, 0xfe275244, 0x1a81, 0x29c27d0, 0xfdf88a80), at 0xfab906d4
[3] coherence::component::util::Daemon::onWait(0x29bbc30, 0xf71fb510, 0x29bfe48, 0xf71fb510, 0xfdf88a80, 0xf71fb500), at 0xfa757470
[4] coherence::component::util::Daemon::run(0x29bbc30, 0xfe6ea03c, 0xfe6ea03c, 0xf71fb5a0, 0x1, 0xf71fb5c0), at 0xfa75800c
[5] coherence::lang::Thread::run(0xf71fbed0, 0x29bbf40, 0xfdf88a80, 0x29c0b20, 0xf71fbf28, 0xfe4eab9c), at 0xfa9d9918
[6] coh_startPosix(0x17dfd38, 0xf71fc000, 0x0, 0x0, 0xfa629ee8, 0xfe275df0), at 0xfa614f74
(dbx) dump
fEscaped = true
nState = UNION
this = 0xf71fb328
cHandle = 4096U
(dbx)
====================Can you please provide the following information:
- Coherence version
- OS version
- Compiler version
I would also suggest that you validate that you are on the minimum supported compiler version paying particular attention the patch level, see http://docs.oracle.com/cd/E24290_01/coh.371/e22839/gs_install.htm#BABDCDFG.
thanks,
Mark
Oracle Coherence -
BufferUnderflowException using DbDump
Mark,
We are also seeing sequence skipping in production, perhaps a function of the cleaner not catching up (although we have two cleaner threads configured).
Yesterday, in an attempt to perform maintenance that would bring our growing log files back down to a reasonable number, I was running a sequence of DbDump/DbLoads through a tool I wrote that simply iterates through the database names in each log file set, dumps those to a temp dir, and rebuilds a new log file set from the dump files (resulting in many fewer log files) by importing each database back into the new environment.
While doing this, I got a BufferUnderflowException on a logfile set that had perfect sequence numbers, which surprised me. Thus, I'm not able to do a DbDump and DbLoad on that data set. The exception stack trace I get is:
ERROR 2009-01-26 07:01:03,157 | Maintenance:dumpAndReload | error dumping persist#FlightPlanStore#com.foreflight.plan.FlightPlanning from /workspace/mymetar_com/exploded/webapp/data/flightplan
com.sleepycat.je.DatabaseException: (JE 3.3.75) fetchTarget of 0x3/0x68ef71 parent IN=17457 IN class=com.sleepycat.je.tree.IN lastFullVersion=0x8/0x8c47f8 parent.getDirty()=false state=0 com.sleepycat.je.DatabaseException: java.nio.BufferUnderflowException
at com.sleepycat.je.tree.IN.fetchTarget(IN.java:1244)
at com.sleepycat.je.tree.Tree.getNextBinInternal(Tree.java:1403)
at com.sleepycat.je.tree.Tree.getNextBin(Tree.java:1266)
at com.sleepycat.je.dbi.CursorImpl.getNextWithKeyChangeStatus(CursorImpl.java:1629)
at com.sleepycat.je.dbi.CursorImpl.getNext(CursorImpl.java:1499)
at com.sleepycat.je.Cursor.retrieveNextAllowPhantoms(Cursor.java:2181)
at com.sleepycat.je.Cursor.retrieveNext(Cursor.java:1991)
at com.sleepycat.je.Cursor.getNext(Cursor.java:777)
at com.sleepycat.je.util.DbDump.dump(DbDump.java:350)
at com.foreflight.backup.Maintenance.dumpAndReload(Maintenance.java:104)
at com.foreflight.backup.MaintenanceTest.testMaintenFlightplan(MaintenanceTest.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at com.intellij.rt.execution.junit.IdeaTestRunner.doRun(IdeaTestRunner.java:65)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at com.intellij.rt.execution.junit.IdeaTestRunner.startRunnerWithArgs(IdeaTestRunner.java:24)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:118)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
Caused by: com.sleepycat.je.DatabaseException: java.nio.BufferUnderflowException
at com.sleepycat.je.log.LogManager.getLogEntryFromLogSource(LogManager.java:785)
at com.sleepycat.je.log.LogManager.getLogEntry(LogManager.java:661)
at com.sleepycat.je.tree.IN.fetchTarget(IN.java:1215)
... 26 more
Caused by: java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Buffer.java:398)
at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:117)
at com.sleepycat.je.log.LogUtils.readUnsignedInt(LogUtils.java:54)
at com.sleepycat.je.log.LogEntryHeader.<init>(LogEntryHeader.java:91)
at com.sleepycat.je.log.LogManager.getLogEntryFromLogSource(LogManager.java:696)
... 28 more
With this, I figured there is some corruption and I need to recover. I abandoned the dump/load java util I wrote and reverted to the command line DbScavenger and DbLoad utils. I can run a DbScavenger and dump something to a target directory, but the result doesn't seem to have what I might expect. There are a bunch of "dbX.dump" files and one "<index>.dump" file instead of a set of "<index name>.dump" files. Maybe this is a result of the tools not being able to recover all the data? I'm wondering if I have a time bomb with this set of logfiles in production, where some keys/records can be accessed, but others not, and just we haven't had users that have corrupted data access their records yet. Happy to upload the logfiles somewhere if having these would be helpful. It's time we buy that maintenance This is a mission critical db for us.
-tysonTyson,
Thanks for posting a new thread.
The BufferUnderflowException you're getting is not related to log cleaning / file deletion, so whether there are any deleted files is unrelated.
This exception is the equivalent of a checksum failure, but it is detected earlier than the checksum verification can take place, while attempting to parse the log entry header. It has the same meaning as a checksum: The log is corrupt, possibly as the result of a hardware, file system or OS failure.
In this particular case I believe the log file is incomplete, although I'm not sure that tells us anything about why the corruption occurred. JE was attempting to fetch this LSN: 0x3/0x68ef71. The file is 00000003.jdb and the entry is at offset 0x68ef71. You may want to take a look at the length of that file and see whether it ends just past this offset.
The three approaches for dealing with a file corruption are to 1) revert to a backup, 2) recreate the data from some other source, or 3) try to scavenge the file and reconstruct the data. You are attempting (3) so I assume you don't have a useful backup or another source for the data. Is that correct?
DbScavenger outputs a dump file per database. The name of the file has the name of the database in it, but if the name cannot be determined then it uses the internal database ID instead. In the latter case, you'll have to figure out what database it belongs to by examining the contents. Assuming that you can determine which database a file belongs to, you can use DbLoad to re-create that database in fresh environment.
DbScavenger attempts to skip over corrupt portions of the log files and it writes out only the records it can read successfully -- the records that are fully intact and have valid checksums. How useful this is depends on how much is corrupted and whether you have the ability to piece together what is left. You'll need to examine the output and try to determine for yourself whether it is worthwhile to try to reconstruct the data from that information, or use approach (1) or (2) instead.
--mark -
dbx core dumping when I debug my application with RTC enable (I'm truying to dectect some memory leaks in my code). and I'm getting the following
RTC: Enabling Error Checking...
RTC: Running program...
(/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) suppress rui
(/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) cont
t@10 (l@10) signal SEGV (no mapping at the fault address) in __rtc_trap_handler at 0xff2e1148
0xff2e1148: __rtc_trap_handler+0x0058: ld [%l5], %l0
dbx: warning: undefined type number (0,158) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #207 sqlca:(0,158),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,211) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #530 host:(0,211),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,212) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #531 pwd:(0,212),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,213) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #532 usrid:(0,213),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,214) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #533 address:(0,214),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,228) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #577 module:(0,228),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,237) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #638 data:(0,237),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,238) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #639 dest:(0,238),
assuming type `int {assumed}'
dbx: warning: undefined type number (0,846) at /export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #1136 username:G(0,846),
assuming type `int {assumed}'
Current function is queue_message
751 EXEC SQL CALL p_message.queue(:seq,:dest, :data, :notempty, :ret);
(/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@10
[1] sqlscht(0x48708, 0x47914, 0xa, 0x1, 0x3, 0xa), at 0xfe8cd0f8
[2] sqldbid(0x48708, 0xfacf8aa8, 0x4dbf8, 0xff0d180c, 0x4, 0x390), at 0xfe8b0fec
[3] sqlexp(0x48708, 0x1, 0x7a, 0x7a, 0xfacf8aa8, 0xfedecb18), at 0xfe8b4208
[4] sqlcmex(0x0, 0x4dbf8, 0xfacf8aa8, 0xff0d18a6, 0xfedecafc, 0xfee1689c), at 0xfe8ab770
[5] sqlcxt(0xfacf9cac, 0xff0e3d84, 0xfacf8aa8, 0xff0d18a6, 0xfacf9d48, 0xa), at 0xfe8abdbc
Segmentation Fault (core dumped)
Some iformation you might need:
Compiler : code compiled with cc version 6.2
Debugger : 6.2 patch 111683-03
OS : Solaris 8 patch 108528-12
Machine : E250
Thanks/export/home/husam/release/lib/libstorage_s.so.1:backend.c stab #530 host:(0,211),The key to your problem is probably the stabs reading error.
How was backend.c compiled?
Normally dbx will load stabs information on demand as needed.
You can start dbx and use the "module" command to load
the stabs information right away without running the program or using RTC.
Try this:
(dbx) module backend.o
Does that cause the stabs warnings?
If you can "repair" or "normalize" the stabs information in that module,
the crash will probably go away. -
Core dump: dbx - analysing C++ object
Hi,
Is there a way to analyse the content of a C++ object from a core dump? I'm looking at crash that occurred in a member method and I need to see the values of some member attributes of this object. First of where is the "this" pointer stored? Is there a documentation that describes what the object layout is in memory?
Thanks in advance.I am facing a somewhat similar symptom. dbx6.0 (SunOS5.6/purify4.5.1) will core dump when I say "run <arg1> <arg2>" at the prompt while tracing a purified-executable; dbx will NOT dump core if that executable is not purify'd. The message I get is:
dbx: internal error: signal SIGSEGV (no mapping at fault address)
dbx's core dump will appear in </vol03/kiran/tmp>
Abort(coredump) -
Help: dbx core dump, solaris 10, amd64
Hi,
Recently I run into the following when I debug a core dump,
(dbx) where
dbx: internal error: signal SIGSEGV (no mapping at the fault address)
dbx's coredump will appear in /tmp
Abort (core dumped)
-bash-3.00$ dbx -V
Sun Ceres DBX Debugger 7.7 SunOS_i386 2008/10/22
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.7' in your .dbxrc
(dbx)
I wonder if anyone has some idea of this bug, is it known? Is it fixed in sunstudio 12 u1?
If needed, I can supply /tmp/core dumped by dbx.
Thanks,-bash-3.00$ cat /etc/release
Solaris 10 5/08 s10x_u5wos_10 X86
Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 24 March 2008
-bash-3.00$ pstack /tmp/core
core '/tmp/core' of 11962: /z/tools/SUNWspro/bin/../prod/bin/amd64/dbx ./gp3310/bin/postgres core
fffffd7fff1bc99a lwpkill () + a
fffffd7fff161c89 raise () + 19
fffffd7fff141210 abort () + 90
0000000000565bb4 ???????? ()
fffffd7fff1b7176 __sighndlr () + 6
fffffd7fff1aba72 call_user_handler () + 252
fffffd7fff1abc8e sigacthandler (b, fffffd7fffdfeef0, fffffd7fffdfeb90) + de
--- called from signal handler with signal 11 (SIGSEGV) ---
00000000007854a8 SUNWXUnw_Decode_FDE () + 324
000000000078393b ???????? ()
0000000000783a74 ???????? ()
000000000060345d __1cLUnwindStackIdown_one6M_i_ () + 1d
00000000005e7185 __1cFFramePunwind_down_one6MpnGPstack__b_ () + e1
00000000005e77c8 __1cFFrameLcreate_next6FpnGPstack_i_p0_ () + 2e0
0000000000677471 __1cGPstackRcreate_next_frame6M_pnFFrame__ () + 59
0000000000677d00 __1cGPstackJwalkstack6MipnFFrame_bpF2pv_b3_2_ () + 78
0000000000678bc1 __1cGPstackIwherecmd6Miibpv_v_ () + 221
000000000060c9a5 __1cVDbxWhereCmdProcessingHprocess6Mippc_i_ () + 151
000000000060ca5a __1cJksh_where6FpnGInterp_ippcpv_i_ () + 32
000000000072f3ea ???????? ()
000000000072ecfe __1cNpdksh_execute6FpnGInterp_pnCop_i_i_ () + 946
000000000071d3ac __1cLpdksh_shell6FpnGInterp_pnGSource__i_ () + 468
0000000000569254 __1cNmain_cmd_loop6FpnGInterp__v_ () + 9c
0000000000569ba5 main () + 705
000000000055defc ???????? ()
Thanks, -
Why dbx core dumps on input core file?
Hi,
We have a Solaris 10 machine, on which dbx always core dumps when input any core files to it. What would possibly wrong with this machine? Or where should we look to find some clues?
Thanks a lot,
pamPlease create a perl script using the text below:
#!/usr/bin/perl
use File::Find;
sub wanted {
return unless -x && -f;
return unless /.*\.so\.[0-9]$/;
return unless `/bin/file $_ | grep 64-bit`;
$out = `elfdump -e $_ | grep e_shoff`;
$out =~ m/e_shoff:\s+(0x[0-9a-f]+)\s/;
if ($1 =~ m/[4c]$/) {
print "bad alignment in file: $File::Find::name\n";
print "Looking for bad ELF section header table alignment in 64-bit files\n";
find(\&wanted, ( "/lib", "/usr/lib" ));Then, make it executable and run it (does not need root permissions):
any_user$ chmod +x check_library_alignment.pl
any_user$ ./check_library_alignment.pl
If the perl script reports mis-aligned libraries (elfsign modifies the alignment), this looks to be bug 6283299. If you are current on patches for Solaris as well as your SunStudio installation, you'll need to raise an SR requesting the fix. If you are not current on patches, you could start with SunStudio patches which was subsequently patched to address elfsign alignments.
Source: http://technopark02.blogspot.com/2006/01/64-bit-dbx-internal-error-signal.html -
Debugging crash dump in dbx-host
I was debugging a core generated from the live box and faced following error.
The dbx is not able to map the address and giving following errors
core file header read successfully
Reading ld.so.1
dbx: core file read error: address 0xffffffff7f725d48 not available
dbx: core file read error: address 0xffffffff7f72e000 not available
dbx: warning: Dbx could not initialize rtld_db
Make sure this is the same version of Solaris where the core dump originated.
Use `help core mismatch' for more info.
program terminated by signal SEGV (no mapping at the fault address)
0x000000010001e668: a32m60+0x0188: cmp %l5, %g5
dbx: core file read error: address 0xffffffff7fffc630 not in data space
dbx: core file read error: address 0xffffffff7fffc6e0 not in data space
dbx: attempt to read frame failed -- cannot derive frame pointer
The host where is the core had generated and dbx host are on same version of solaris.Did you look at `help core mismatch' topic? It explains the problem you're facing in good detail. Although there's a chance that what you're seeing is the dbx bug.
-
Core dump: dbx stack trace
Can anyone point to a good doco on how to interpret stack trace from Solaris core file?
For example,
strcasecmp(0xfedf7cd8, 0x47534b53, 0x4b3ee0, 0x619c50, 0xff327234, 0xff33c000), at 0xff2cf390
what do those 6 addresses in brackets represent?
ThanksPlease take a look at http://forum.sun.com/thread.jspa?forumID=10&threadID=9801
or search this forum for 'pstack output format'
Regards,
Sergey. -
Segment fault (Core dump)
Hi
when i run the following Pro*c file in Unix Environment im getting the SEGMENTATION FAULT(CORE DUMP) error. I used DBX to debug the code. I couldnt find out the proper reason for this error form the dbx output.
This is the output i got from DBX.
*signal SEGV (no mapping at the fault address) in _doprnt at 0xfb98736c*
*0xfb98736c: _doprnt+0x2798: stb %o0, [%o1]*
I did the showmemuse and show leaks, the output for this commands :
(dbx) showmemuse
Checking for memory use...
Blocks in use report (blocks in use: 575 total size: 328086 bytes)
Total % of Num of Avg Allocation call stack
Size All Blocks Size
======= ==== ====== ====== =======================================
134876 41% 30 4495 kpummapg < kghgex
18098 5% 1 18098 lxldlbb < lxlinit < kpummpin < kpupin < sqgctx < sqgrct < sqlcmex < sqlcxt
16552 5% 4 4138 kogmapg < kghgex
16516 5% 4 4129 kogmapg < kogmasg
12288 3% 6 2048 nlhtnsl < nlhthnew
10350 3% 5 2070 calloc < nsbGetBFS
9688 2% 1 9688 kouogini < kouoini < kpuinit0 < kpuinit < sqgctx < sqgrct < sqlcmex < sqlcxt
8200 2% 1 8200 findbuf < doprnt < _fprintf < main
8120 2% 4 2030 sqlrlc < sqlcopydfn
8080 2% 1 8080 kpuinit0 < kpuinit < sqgctx < sqgrct < sqlcmex < sqlcxt < main
7168 2% 1 7168 calloc < nsgbliuc < nsgblini < niotns < nigcall < osncon < kpuadef < upiini
7168 2% 3 2389 lxldlod < lxdlobj
5976 1% 4 1494 sqlrlc < sqlcopydfn
4640 1% 1 4640 sqlrlc < sqldrl < sqlexp < sqlcmex < sqlcxt < get_pub_dates < main
4640 1% 1 4640 sqlrlc < sqlbrl < sqlexp < sqlcmex < sqlcxt < get_pub_dates < main
4128 1% 1 4128 calloc < nsgbliuc < nsgblini < niotns < nigcall < osncon < kpuadef < upiini
4024 1% 1 4024 sqlrlc < sqlbrl < sqlexp < sqlcmex < sqlcxt < get_pub_dates < main
3408 1% 1 3408 sqlrlc < sqldrl < sqlexp < sqlcmex < sqlcxt < get_pub_dates < main
2452 <1% 8 306 calloc < nsmal
2156 <1% 7 308 calloc < nlemfins
(dbx) showleaks
Checking for memory leaks...
Actual leaks report (actual leaks: 1 total size: 30 bytes)
Total Num of Leaked Allocation call stack
Size Blocks Block
Address
====== ====== ========== =======================================
30 1 0x9c9c8 getOutFileName < main
Possible leaks report (possible leaks: 0 total size: 0 bytes)
i know its because of Pad pointer and something related to Pointer or array overflow. But i couldnt find out where exactly happening....
Following is my Code, please help me to find out the error and what i need to change in my code:
#ifndef ORA_PROC
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <math.h>
#else
typedef struct FILE FILE;
#endif
/*** Added by TCS Begins ***/
char getOutFileName(char );
char getEnvVar(char );
void prepare_declare_oracle_cursors();
void get_calendar_dates();
void get_issues();
void get_master_cusip_no();
void get_run_date_finish();
void get_payments();
int get_pub_dates();
void get_rights();
void get_s_h_meetings();
void get_special_codes();
void get_agents();
void get_currency();
void get_payment_codes();
void get_issue_codes();
void get_standard_footnotes();
void get_index_codes();
void get_exchanges();
void get_tax_codes();
void get_tenders();
int check_if_holiday(int );
void sql_error(int , int , char *);
void login_error();
void no_pub_dates();
void no_cal_dates();
void no_finish_date();
void save_payment_footnote(char , char [3],int , char );
void save_issue_footnote(char );
int print_footnotes();
int print_foreign_tax();
int get_partial_run_time();
void save_rght_footnotes();
int print_supplimental();
int convert_tender_price(char *);
void pad_s_h_meetings();
int strip_out_codes(char *);
char *getSqlLogonString();
/**** TCS ADD Ends ****/
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE ddr_create_all_tapes.h;
#define TRUE 1
#define ORA_NOT_FOUND ( sqlca.sqlcode == 1403 )
/* The Definitions of SUCCESS and FAILURE were switched to test the
idea that SUCCESS should be Zero and FAILURE should be Non-Zero
#define SUCCESS 1
#define FAILURE 0
#define SUCCESS 0
#define FAILURE -1
#define SYSOK 0
#define SYSERR 1
#define DEBUGGING 0
#define DEBUG_LEVEL 0
/* #define DEBUGGING 1
#define DEBUG_LEVEL 2
int first_cal_date;
int footnote_count;
int foreign_count;
int last_cal_date;
int total_records;
int which_tape = 0;
char cusip_table_name[30];
char field_type_code;
char final_cusip_number[10];
/**** char footnote_text[300][300];
char foreign_text[60][100]; **** Commented by TCS as per the change request ****/
/*** Added by TCS as per the change request ***/
char footnote_text[200][300];
char foreign_text[200][300];
/*** TCS Add Ends ***/
char freq_type_code;
char init_cusip_number[10];
char rec_type_code;
char payment_where_clause[600];
char rights_where_clause[600];
char tenders_where_clause[600];
char s_h_meet_where_clause[600];
char last_run_time[18];
char supp_info_buffer[321];
int call_flag;
int tenders_flag;
int rights_flag;
int s_h_meet_flag;
int rght_foot_pos;
double hold_double;
int hold_int;
char hold_char[100];
int i=0;
FILE *fp;
FILE pfp; / this is used for a report file to correspond to
the partial tape file */
int main(int argc, char argv[]) / Modified by TCS */
char ddr_tape_name[100];
char ddr_partial_rpt[100];
char copyright_notice[100];
long file_position;
char *logname;
/* READ IN PARAMETERS AND SET UP VARIABLES */
memset (oracle_uid.arr, 0, sizeof(oracle_uid.arr));
memset (oracle_pwd.arr, 0, sizeof(oracle_pwd.arr));
strcpy (oracle_uid.arr, argv[1]);
oracle_uid.len = strlen(oracle_uid.arr);
strcpy (oracle_pwd.arr, argv[2]);
oracle_pwd.len = strlen(oracle_pwd.arr);
printf("Calling getSqlLogonString");
logname = getSqlLogonString();
which_tape = atoi(argv[1]);
memset (last_run_time, 0, sizeof(last_run_time));
if ( ( DEBUGGING ) && ( DEBUG_LEVEL > 1 ) )
printf ("Oracle username: %s\n", oracle_uid.arr);
printf ("Oracle password: %s\n", oracle_pwd.arr);
printf ("Oracle username/password@database: %s\n", logname); /** Added by TCS **/
printf ("Which Tape: %d\n", which_tape);
hold_double = 0.0;
hold_int = 0;
memset (hold_char, ' ', sizeof(hold_char));
EXEC SQL WHENEVER SQLERROR DO login_error();
/* EXEC SQL CONNECT :oracle_uid IDENTIFIED BY :oracle_pwd; */
EXEC SQL CONNECT :logname ;
printf ("Connected to ORACLE... \n");
EXEC SQL WHENEVER SQLERROR continue;
get_pub_dates();
memset (ddr_tape_name, 0, sizeof(ddr_tape_name));
memset (ddr_partial_rpt, 0, sizeof(ddr_partial_rpt));
memset (cusip_table_name, 0, sizeof(cusip_table_name));
memset (payment_where_clause, 0, sizeof(payment_where_clause));
memset (rights_where_clause, 0, sizeof(rights_where_clause));
memset (tenders_where_clause, 0, sizeof(tenders_where_clause));
memset (s_h_meet_where_clause, 0, sizeof(s_h_meet_where_clause));
/* SET UP VARIABLES BASED ON THE DIFFERENT FREQUENCY OF TAPE */
switch (which_tape)
case 0:
get_partial_run_time();
/*sprintf (ddr_tape_name,
"idb_tape$out:ddr_partial%1d.asc", p_count); ** Comented by TCS **/
sprintf (ddr_tape_name,"%s%1d.%s",getOutFileName("DDR_PARTIAL"),p_count,getEnvVar("DDR_PARTIAL_EXT_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_PARTIAL_TAPE_TABLE");
/*sprintf (ddr_partial_rpt,
"idb_tape$out:ddr_partial%1d.rpt", p_count); ** Commented by TCS **/
sprintf (ddr_partial_rpt,"%s%1d.%s",getOutFileName("DDR_PARTIAL"),p_count,getEnvVar("DDR_PARTIAL_EXT_RPT")); /* Added by TCS */
get_calendar_dates();
freq_type_code = '0';
sprintf (payment_where_clause,
"AND PYMT_PUB_DATE IS NULL \
AND ((PYMT_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND PYMT_ADD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (PYMT_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND PYMT_UPD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_from.arr, p_to.arr, p_from.arr, p_to.arr);
sprintf (rights_where_clause,
"AND RGHT_PUB_DATE IS NULL \
AND ((RGHT_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND RGHT_ADD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (RGHT_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND RGHT_UPD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_from.arr, p_to.arr, p_from.arr, p_to.arr);
sprintf (tenders_where_clause,
"AND TNDR_PUB_DATE IS NULL \
AND ((TNDR_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND TNDR_ADD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (TNDR_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND TNDR_UPD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_from.arr, p_to.arr, p_from.arr, p_to.arr);
sprintf (s_h_meet_where_clause,
"AND SMTG_PUB_DATE IS NULL \
AND ((SMTG_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND SMTG_ADD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (SMTG_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI') \
AND SMTG_UPD_DATE_TIME < TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_from.arr, p_to.arr, p_from.arr, p_to.arr);
break;
case 3:
/* PARTIAL 5 */
get_partial_run_time();
p_count = 5;
/**sprintf (ddr_tape_name,
"idb_tape$out:ddr_partial%1d.asc", p_count); ** Comented by TCS **/
sprintf (ddr_tape_name,"%s%1d.%s",getOutFileName("DDR_PARTIAL"),p_count,getEnvVar("DDR_PARTIAL_EXT_ASC")); /* Added by TCS */
/* for testing only I am using seperate TABLE */
/**strcpy (cusip_table_name,
"IDB.DDR_PARTIAL5_TAPE_TABLE"); ** Commented by TCS **/
strcpy (cusip_table_name,
"IDB.DDR_PARTIAL_TAPE_TABLE");
/*sprintf (ddr_partial_rpt,
"idb_tape$out:ddr_partial%1d.rpt", p_count); ** Commented by TCS **/
sprintf (ddr_tape_name,"%s%1d.%s",getOutFileName("DDR_PARTIAL"),p_count,getEnvVar("DDR_PARTIAL_EXT_RPT")); /* Added by TCS */
get_calendar_dates();
freq_type_code = '3';
sprintf (payment_where_clause,
"AND ( (PYMT_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (PYMT_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_to.arr, p_to.arr);
sprintf (rights_where_clause,
"AND ((RGHT_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (RGHT_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_to.arr, p_to.arr);
sprintf (tenders_where_clause,
"AND ((TNDR_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (TNDR_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_to.arr, p_to.arr);
sprintf (s_h_meet_where_clause,
"AND ((SMTG_ADD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')) \
OR (SMTG_UPD_DATE_TIME >= TO_DATE('%15.15s', 'DD-MON-RR HH24:MI')))",
p_to.arr, p_to.arr);
break;
case 1:
/**strcpy (ddr_tape_name,
"idb_tape$out:ddr_daily_tape.asc"); ** Commented by TCS **/
sprintf (ddr_tape_name,"%s",getOutFileName("DDR_DAILY_TAPE_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_DAILY_TAPE_TABLE");
get_calendar_dates();
freq_type_code = '1';
sprintf (payment_where_clause, "AND (PYMT_PUB_DATE \
= TO_DATE('%s','DD-MON-RR') OR PYMT_PUB_DATE IS NULL)", pub_to_date.arr);
sprintf (rights_where_clause, "AND (RGHT_PUB_DATE \
= TO_DATE('%s','DD-MON-RR') OR RGHT_PUB_DATE IS NULL)", pub_to_date.arr);
sprintf (tenders_where_clause, "AND (TNDR_PUB_DATE \
= TO_DATE('%s','DD-MON-RR') OR TNDR_PUB_DATE IS NULL)", pub_to_date.arr);
sprintf (s_h_meet_where_clause, "AND (SMTG_PUB_DATE \
= TO_DATE('%s','DD-MON-RR') OR SMTG_PUB_DATE IS NULL)", pub_to_date.arr);
break;
case 5:
/*strcpy (ddr_tape_name,
"idb_tape$out:ddr_weekly_tape.asc"); ** Commented by TCS **/
sprintf (ddr_tape_name, "%s",getOutFileName("DDR_WEEKLY_TAPE_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_WEEKLY_TAPE_TABLE");
get_calendar_dates();
freq_type_code = '2';
sprintf (payment_where_clause, "AND (PYMT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR PYMT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (rights_where_clause, "AND (RGHT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR RGHT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (tenders_where_clause, "AND (TNDR_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR TNDR_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
/* ram - 6/28/95 - reverted back to original criteria: */
/* include on weekly tape based on pub-date, regardless of */
/* whether in calendar or not */
sprintf (s_h_meet_where_clause, "AND (SMTG_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR SMTG_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
break;
case 12:
/* ram - 7/13/95 */
/* changed monthly "6" to "12" */
/*strcpy (ddr_tape_name,
"idb_tape$out:ddr_monthly_tape.asc"); ** Commented by TCS **/
sprintf (ddr_tape_name, "%s", getOutFileName("DDR_MONTHLY_TAPE_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_MONTHLY_TAPE_TABLE");
freq_type_code = '3';
sprintf (payment_where_clause, "AND (PYMT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR PYMT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (rights_where_clause, "AND (RGHT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR RGHT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (tenders_where_clause, "AND (TNDR_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR TNDR_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
break;
case 8:
/*strcpy (ddr_tape_name,
"idb_tape$out:ddr_quarterly_tape.asc");** Commented by TCS **/
sprintf (ddr_tape_name,"%s",getOutFileName("DDR_QUARTERLY_TAPE_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_QUARTERLY_TAPE_TABLE");
freq_type_code = '3';
sprintf (payment_where_clause, "AND (PYMT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR PYMT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (rights_where_clause, "AND (RGHT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR RGHT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (tenders_where_clause, "AND (A.TNDR_TENDER_DATE \
= TO_DATE('%s','DD-MON-RR'))", pub_to_date.arr); break;
case 9:
/*strcpy (ddr_tape_name,
"idb_tape$out:ddr_annual_tape.asc"); ** Comented by TCS **/
sprintf (ddr_tape_name,"%s", getOutFileName("DDR_ANNUAL_TAPE_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_ANNUAL_TAPE_TABLE");
freq_type_code = '4';
sprintf (payment_where_clause, "AND (PYMT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') \
OR PYMT_PUB_DATE = TO_DATE('29-OCT-1929','DD-MON-YYYY'))",
pub_from_date.arr, pub_to_date.arr);
sprintf (rights_where_clause, "AND (RGHT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR RGHT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (tenders_where_clause, "AND (A.TNDR_TENDER_DATE \
= TO_DATE('%s','DD-MON-RR'))", pub_to_date.arr); break;
case 15:
/*strcpy (ddr_tape_name,
"idb_tape$out:ddr_general_tape.asc"); ** Commented by TCS **/
sprintf (ddr_tape_name,"%s", getOutFileName("DDR_GENERAL_TAPE_ASC")); /* Added by TCS */
strcpy (cusip_table_name,
"IDB.DDR_GENERAL_TAPE_TABLE");
freq_type_code = '3';
sprintf (payment_where_clause, "AND (PYMT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR PYMT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (rights_where_clause, "AND (RGHT_PUB_DATE \
BETWEEN to_date('%s','DD-MON-RR') AND to_date('%s','DD-MON-RR') OR RGHT_PUB_DATE IS NULL)",
pub_from_date.arr, pub_to_date.arr);
sprintf (tenders_where_clause, "AND (A.TNDR_TENDER_DATE \
= TO_DATE('%s','DD-MON-RR'))", pub_to_date.arr); break;
default:
exit (printf ("Invalid tape option: %d\n", which_tape)); /*** %s changed by TCS to %d ***/
break;
if ((fp = fopen(ddr_tape_name, "w+")) == NULL)
exit (printf ("Unable to open asc <%s> file for write access\n",
ddr_tape_name));
/* GR. Partial 5
if (which_tape == 0 || which_tape == 3 )
if ((pfp = fopen(ddr_partial_rpt, "w+")) == NULL)
exit (printf ("Unable to open asc <%s> file \
for write access\n", ddr_partial_rpt));
/* WRITE THE HEADER RECORD ON THE TAPE */
memset (copyright_notice, 0, sizeof(copyright_notice));
sprintf (copyright_notice, "COPYRIGHT (c) %.4s STANDARD & POOR'S \
CORPORATION. ALL RIGHTS RESERVED", year.arr);
fprintf (fp, "%-80.80sDIVIDEND%8d%17.17s ",
copyright_notice, control_date, run_date_start.arr);
file_position = ftell(fp);
fprintf (fp, "\n");
total_records = 0;
/* GET THE SPECIAL CATEGORY RECORDS */
get_special_codes();
/* SELECT FROM THE DRIVER TABLE TO GET ALL THE OTHER RECORDS */
get_master_cusip_no();
printf("After get_master_cusip_no()");
get_run_date_finish();
printf("After get_run_date_finish()");
if ( DEBUGGING )
printf ("initial cusip = %s\n", init_cusip_number);
printf ("final cusip = %s\n", final_cusip_number);
printf ("record type is %c\n", rec_type_code);
/* WRITE THE TRAILER RECORD */
fprintf (fp, "%8d%-17.17s%07d%-9.9s1%-9.9s%c\n", control_date,
run_date_finish.arr, total_records, init_cusip_number , final_cusip_number,
rec_type_code);
/* re-wind and add to the header record ... */
rewind(fp);
fseek(fp, file_position - 33, 0);
fprintf (fp, "%07d%-9.9s1%-9.9s%c", total_records, init_cusip_number,
final_cusip_number, rec_type_code);
fclose(fp);
/* GR Partial 5
if (which_tape == 0 || which_tape == 3 )
fclose(pfp);
printf ("\nDONE: %07d%-9.9s1%-9.9s%c\n", total_records, init_cusip_number,
final_cusip_number, rec_type_code);
return (0); /*** Added by TCS ***/
void prepare_declare_oracle_cursors() /* Modified by TCS */
/* We'll us dynamic sql to get the appropriate where clause but use */
/* a bind variable for the master cusip number. So we prepare and */
/* declare get_issues, get_payments, get_tenders, get rights, and */
/* get_s_h_meetings cursors only once, outside the driving loop. */
EXEC SQL BEGIN DECLARE SECTION;
/**** TCS Comment begins as per the change request ****
VARCHAR sql_stmt1[1500];*/ /* issues */
/*VARCHAR sql_stmt2[3000]; *//* payments */
/*VARCHAR sql_stmt3[500]; *//* tenders */
/*VARCHAR sql_stmt4[500]; *//* rights */
/*VARCHAR sql_stmt5[500]; *//* s_h_meetings */
/**** TCS Add begins as per the change request ****/
VARCHAR sql_stmt1[2000]; /* issues */
VARCHAR sql_stmt2[4000]; /* payments */
VARCHAR sql_stmt3[1000]; /* tenders */
VARCHAR sql_stmt4[1000]; /* rights */
VARCHAR sql_stmt5[1000]; /* s_h_meetings */
/**** TCS Add ends ****/
EXEC SQL END DECLARE SECTION;
/* prepare and declare the get_issues cursor */
memset (sql_stmt1.arr, 0, sizeof(sql_stmt1.arr));
sprintf (sql_stmt1.arr, "SELECT \
A.ISSU_PAR_VALUE, \
DECODE (A.ISSU_MARKET_SYMBOL||A.ISSU_NASDAQ,'OTCY','NASD', A.ISSU_MARKET_SYMBOL), \
A.ISSU_C_RATE, A.ISSU_C_FREQ, A.ISSU_C_NEW_AMOUNT, A.ISSU_C_NEW_Q1, \
A.ISSU_C_NEW_Q2, A.ISSU_C_NEW_Q3, A.ISSU_C_OLD_AMOUNT, A.ISSU_C_OLD_Q1, \
A.ISSU_C_OLD_Q2, A.ISSU_C_OLD_Q3, A.ISSU_CURRENCY, \
A.ISSU_UPD_HIS, A.ISSU_COMMENT, A.TAX_EXEMPT_FLAG,\
B.SEC_TYPE_CODE, B.ACQ_BY_IND, B.ACQ_ISSUER_NO, \
rtrim(substr(B.ACQ_ISSUER_DESCR,1,30)), \
B.INDEX_CODE, B.TRFR_AGT_CODE, B.NY_AGT_CODE, B.TICKER_SYMBOL, \
B.TICKER_SYMBOL2, \
rtrim(substr(C.ISSR_DDR_ISSUER_DESCR,1,60)), \
rtrim(substr(E.ISSUE_DESCR,1,30)), \
rtrim(substr(D.ISSUER_DESCR1,1,30)), \
F.TRFR_DAYS \
FROM IDB.DDR_ISSUES A, IDB.DDR_ISSUES_2 B, IDB.DDR_ISSUERS C, \
BLIS.CUSIP_ISSUERS D, BLIS.CUSIP_ISSUES E, IDB.DDR_TRANSFER F \
WHERE A.ISSU_CUSIP_NO = :master_cusip_no \
AND A.ISSU_CUSIP_NO = B.ISSU_CUSIP_NO(+) \
AND SUBSTR(A.ISSU_CUSIP_NO, 1, 6) = C.ISSR_ISSUER_NO(+) \
AND SUBSTR(A.ISSU_CUSIP_NO, 1, 6) = D.ISSUER_NO \
AND A.ISSU_CUSIP_NO = E.CUSIP_NO \
AND A.ISSU_TRANSFER_CODE = F.TRFR_TR_CD(+) ");
sql_stmt1.len = strlen(sql_stmt1.arr);
EXEC SQL PREPARE ISSUES FROM :sql_stmt1;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in preparing ISSUES");
EXEC SQL DECLARE ISSUES_C CURSOR FOR ISSUES;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring ISSUES");
/* now the get_payments cursor */
memset (sql_stmt2.arr, 0, sizeof(sql_stmt2.arr));
sprintf (sql_stmt2.arr, "SELECT \
a.PYMT_RP_DIV, \
a.PYMT_RP_DEC, \
a.PYMT_RP_EXD, \
a.PYMT_RP_REC, \
a.PYMT_RP_PAY, \
a.PYMT_RP_DUE, \
a.PYMT_RP_TAX, \
a.PYMT_RP_ANN, \
a.PYMT_PRP_DIV, \
a.PYMT_PRP_DEC, \
a.PYMT_PRP_EXD, \
a.PYMT_PRP_REC, \
a.PYMT_PRP_PAY, \
a.PYMT_PRP_DUE, \
a.PYMT_PRP_TAX, \
a.PYMT_PRP_ANN, \
NVL(a.PYMT_SEQ_NO,0), \
TO_CHAR(a.PYMT_DECLARED, 'YYMMDD'), \
TO_CHAR(a.PYMT_EX_DATE, 'YYMMDD'), \
TO_CHAR(a.PYMT_STK_REC, 'YYMMDD'), \
TO_CHAR(a.PYMT_TRANSFER_DATE, 'YYMMDD'), \
TO_CHAR(a.PYMT_PAYABLE, 'YYMMDD'), \
a.PYMT_CODES, \
NVL(a.PYMT_CASH_DIVD,0.0), \
NVL(b.ORDINARY_INCOME,0.0), \
NVL(b.CAP_GAINS,0.0), \
NVL(b.SHORT_TM_CAP_GAINS,0.0), \
NVL(b.LONG_TM_CAP_GAINS,0.0), \
NVL(b.RETURN_OF_CAPITAL,0.0), \
b.STK_DIVD_IND, \
NVL(a.PYMT_STK_DIVD,0), \
b.FRAC_IN_CASH_STK_IND, \
NVL(b.FRAC_IN_CASH_PRICE,0.0), \
NVL(a.PYMT_SPLIT_NEW,0), \
NVL(a.PYMT_SPLIT_OLD,0), \
TO_CHAR(a.PYMT_DB_DATE, 'YYMMDD'), \
NVL(b.ARREARS_PAID,0.0), \
NVL(b.ARREARS_DUE,0.0), \
b.SPINOFF_IND, \
b.SPINOFF_ISSUE_NO, \
b.SPINOFF_ISSUER_DESCR, \
b.SPINOFF_ISSUE_DESCR, \
NVL(b.TAX_CODE,0), \
NVL(b.TAX_CODE_2,0), \
NVL(b.OLD_SEQ_NO,0), \
b.ORDINARY_INCOME_CODE, \
b.CAP_GAINS_CODE, \
b.SHORT_TM_CAP_GAINS_CODE, \
b.LONG_TM_CAP_GAINS_CODE, \
b.RETURN_OF_CAPITAL_CODE, \
TO_CHAR(b.CALL_DATE, 'YYMMDD'), \
NVL(b.CALL_PRICE,0.0), \
b.CALL_PRICE_CURRENCY, \
b.CALL_AGT_NO, \
b.ACCRUED_DIVD_IND, \
TO_CHAR(a.PYMT_DB_DATE, 'YYMMDD'), \
a.PYMT_DB_TEXT, \
a.PYMT_DVD_TEXT, \
a.PYMT_YEAR, \
TO_CHAR(a.PYMT_STK_REC, 'fmMon dd'), \
TO_CHAR(a.PYMT_DB_DATE, 'fmMon dd'), \
b.NY_CALL_AGT_NO, \
NVL(b.FOREIGN_TAX_RATE, 0.0), \
NVL(b.NET_RATE, 0.0), \
NVL(b.FEE, 0.0), \
NVL(b.COMMISSION, 0.0), \
a.PYMT_CASH_DIVD_FNS, \
a.PYMT_STK_DIVD_FNS, \
a.PYMT_DECLARED_FNS, \
a.PYMT_EX_DATE_FNS, \
a.PYMT_STK_REC_FNS, \
a.PYMT_PAYABLE_FNS, \
a.PYMT_SPLIT_FNS, \
NVL (TO_NUMBER (TO_CHAR(a.PYMT_PUB_DATE, 'YYYYMMDD')), 0), \
NVL (TO_NUMBER (TO_CHAR(a.PYMT_TRANSFER_DATE, 'YYYYMMDD')), 0), \
NVL (TO_NUMBER (TO_CHAR(a.PYMT_STK_REC, 'YYYYMMDD')), 0), \
NVL (TO_NUMBER (TO_CHAR(a.PYMT_DB_DATE, 'YYYYMMDD')), 0) \
FROM IDB.DDR_PAYMENTS A, IDB.DDR_PAYMENTS_2 B \
WHERE A.PYMT_CUSIP_NO = :master_cusip_no \
AND A.PYMT_CUSIP_NO = B.PYMT_CUSIP_NO (+) \
AND A.PYMT_SEQ_NO = B.PYMT_SEQ_NO (+) \
AND NVL(INSTR(A.PYMT_CODES,'CO'),0) NOT IN (1,3,5,7,9,11) ");
strcat (sql_stmt2.arr, payment_where_clause);
sql_stmt2.len = strlen(sql_stmt2.arr);
EXEC SQL PREPARE PAYMENTS FROM :sql_stmt2;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in preparing PAYMENTS");
EXEC SQL DECLARE PAYMENTS_C CURSOR FOR PAYMENTS;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring PAYMENTS");
/* now the get_tenders cursor */
memset (sql_stmt3.arr, 0, sizeof(sql_stmt3.arr));
/* FXL ADD SUBSTR to tndr_price_qual: substr(A.TNDR_PRICE_QUAL,1,14), 3/23/99,
to to_number 3/29/99 */
sprintf (sql_stmt3.arr, "SELECT \
B.TNDR_AGT_NO, \
B.NY_AGT_NO, \
TO_CHAR(A.TNDR_TENDER_DATE, 'YYMMDD'), \
A.TNDR_PRICE, \
to_number(A.TNDR_PRICE_QUAL), \
A.TNDR_TE_SIZE, \
TNDR_TE_TEXT_1 \
FROM IDB.DDR_TENDERS A, IDB.DDR_TENDERS_2 B \
WHERE TNDR_CUSIP_NO = :master_cusip_no \
AND TNDR_CUSIP_NO = TNDR_ISSUE_NO(+) \
AND A.TNDR_TENDER_DATE = B.TNDR_TENDER_DATE(+) ");
strcat (sql_stmt3.arr, tenders_where_clause);
sql_stmt3.len = strlen(sql_stmt3.arr);
EXEC SQL PREPARE TENDERS FROM :sql_stmt3;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in preparing TENDERS");
EXEC SQL DECLARE TENDERS_C CURSOR FOR TENDERS;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring TENDERS");
/* now the get_rights cursor */
memset (sql_stmt4.arr, 0, sizeof(sql_stmt4.arr));
/* ADD TO_CHAR(A.RGHT_DB_DATE, 'YYMMDD') */
sprintf (sql_stmt4.arr, "SELECT \
B.NO_RIGHTS_ISSUED, \
B.SHS_REQ_FOR_PURCH, \
B.RGHTS_REQUIRED, \
B.QTY_SHS_PURCHASED, \
B.TYPE_SHS_ELIGIBLE, \
B.NEW_SHS_CUSIP_NO, \
B.NEW_CO_ISSUER_DESCR, \
TO_CHAR(A.RGHT_RECORD, 'YYMMDD'), \
TO_CHAR(A.RGHT_EX_DATE, 'YYMMDD'), \
TO_CHAR(B.NYC_RECORD_DATE, 'YYMMDD'), \
TO_CHAR(A.RGHT_EXPIRE, 'YYMMDD'), \
TO_CHAR(A.RGHT_DB_DATE, 'YYMMDD'), \
A.RGHT_PRICE, \
NVL(A.RGHT_RECORD_FNS,' '), \
NVL(A.RGHT_EXPIRE_FNS,' '), \
NVL(A.RGHT_EX_DATE_FNS,' '), \
NVL(A.RGHT_PRICE_FNS,' '), \
NVL(A.RGHT_BASIS_FNS,' '), \
A.RGHT_FOOTNOTE, \
B.US_INELIGIBILITY_IND, \
B.RGHT_TRFR_IND \
FROM IDB.DDR_RIGHTS A, IDB.DDR_RIGHTS_2 B \
WHERE RGHT_CUSIP_NO = :master_cusip_no \
AND RGHT_CUSIP_NO = RGHT_ISSUE_NO(+) \
AND A.RGHT_RECORD = B.RGHT_RECORD_DATE(+) ");
strcat (sql_stmt4.arr, rights_where_clause);
sql_stmt4.len = strlen(sql_stmt4.arr);
EXEC SQL PREPARE RIGHTS FROM :sql_stmt4;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in preparing RIGHTS");
EXEC SQL DECLARE RIGHTS_C CURSOR FOR RIGHTS;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring RIGHTS");
/* ram - added logic on 7/18/95 */
/* for the standard footnotes cursor */
EXEC SQL DECLARE STANDARD_FOOTNOTES_C CURSOR
FOR
SELECT SFTN_S_F_TEXT, SFTN_S_F_TYPE
FROM IDB.DDR_STANDARD_FOOTNOTES
WHERE SFTN_S_F_TYPE = :standard_footnote_type;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring STANDARD_FOOTNOTES");
/* now the issue footnotes cursor */
EXEC SQL DECLARE ISSUE_FOOTNOTES_C CURSOR
FOR
SELECT FTNT_F_TEXT, FTNT_F_TYPE
FROM IDB.DDR_FOOTNOTES
WHERE FTNT_CUSIP_NO = :master_cusip_no
AND FTNT_SYMBOL = :footnote_symbol
AND FTNT_YEAR IS NULL;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring ISSUE_FOOTNOTES");
/* now the payment footnotes cursor */
EXEC SQL DECLARE PAYMENT_FOOTNOTES_C CURSOR
FOR
SELECT FTNT_F_TEXT, FTNT_F_TYPE
FROM IDB.DDR_FOOTNOTES
WHERE FTNT_CUSIP_NO = :master_cusip_no
AND FTNT_SYMBOL = :footnote_symbol
AND FTNT_YEAR = :footnote_year;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring PAYMENT_FOOTNOTES");
/* now the get_s_h_meetings cursor */
/* ONLY for certain tape types. */
/* GR PARTial 5
if (which_tape == 0 || which_tape == 3 || which_tape == 1 || which_tape == 5)
memset (sql_stmt5.arr, 0, sizeof(sql_stmt5.arr));
/* ram - 6/15/95 - changed ORigunal to smtg */
/* TO_CHAR(ORIGINAL_REC_DATE, 'YYMMDD'), \ */
sprintf (sql_stmt5.arr, "SELECT \
TO_CHAR(SMTG_MTG_DATE, 'YYMMDD'), \
TO_CHAR(SMTG_REC_DATE, 'YYMMDD'), \
SMTG_FOOTNOTE \
FROM IDB.DDR_S_H_MEETINGS \
WHERE SMTG_CUSIP_NO = :master_cusip_no ");
strcat (sql_stmt5.arr, s_h_meet_where_clause);
sql_stmt5.len = strlen(sql_stmt5.arr);
EXEC SQL PREPARE S_H_MEET FROM :sql_stmt5;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in preparing S_H_MEET");
EXEC SQL DECLARE S_H_MEET_C CURSOR FOR S_H_MEET;
if (sqlca.sqlcode)
sql_error (SYSERR, sqlca.sqlcode,
"Error in declaring S_H_MEET");
} /* end of if (which_tape == 0 || which_tape == 1 || which_tape == 5) */
/* replaced get_calendar_dates function with use of PLSQL - ram - 5/24/95 */
void get_calendar_dates() /* Modified by TCS */
/* put first and last calendar dates into global ints */
/* first_cal_date and last_cal_date (YYYYMMDD) using */
/* ddr package function get_business_days. */
/* The package object ddr is owned by idb, so I'll */
/* specify this, just in case accounts other than idb */
/* run this code. (EXECUTE priviledge is granted to */
/* "idb_user" role.) */
EXEC SQL BEGIN DECLARE SECTION;
int cal_start;
int cal_end;
int return_val;
EXEC SQL END DECLARE SECTION;
/* initialize destination globals */You actually need to run it with "check -access"; memuse and leaks won't help with the crash, which happens because of illegal memory access. Hopefully, "check -access" will help you to locate the bad guy, but that's not panacea either.
To be precise:
- start dbx
$ dbx <your app>
- issue
(dbx) check -access
(dbx) run
and wait for dbx to stop and report suspicious memory access. -
Getting core dump when using EXEC SQL CLOSE
In my pro*c program , i have used a cursor to fetch the set of accounts.Once cursor is opened , code will perform set
of operation using fetched data and then cursor is closed. Between open and closing of cursor , i have used 23 EXEC
SQL CLOSE. For example i am copying the value of a to b using strlcpy between fetch and close cursor statement.If
returned value from strlcpy is greater than size of destination variable, then flow should not proceed , in that case I will
close the cursor using EXEC SQL CLOSE and return the flow to calling program. Similarly i have closed the cursor at
another 22 locations.
When i compile the code and run binary the core dump occurs. On analyzing the core it shows
t@null (l@8) terminated by signal SEGV (no mapping at the fault address)
0xffffffffffffffff: <bad address 0xffffffffffffffff>
dbx: core file read error: address 0xfc4ffe48 not in data space
Current function is dbMtBaseClass::Pswd_Change
7860 sqlcxt(&_dbMtCtx, &sqlctx, &sqlstm, &sqlfpn);
if I remove any of the three EXEC SQL CLOSE commands , core dump does not occurs.
It looks strange.Please help me to resolve the issue.In my pro*c program , i have used a cursor to fetch the set of accounts.Once cursor is opened , code will perform set
of operation using fetched data and then cursor is closed. Between open and closing of cursor , i have used 23 EXEC
SQL CLOSE. For example i am copying the value of a to b using strlcpy between fetch and close cursor statement.If
returned value from strlcpy is greater than size of destination variable, then flow should not proceed , in that case I will
close the cursor using EXEC SQL CLOSE and return the flow to calling program. Similarly i have closed the cursor at
another 22 locations.
When i compile the code and run binary the core dump occurs. On analyzing the core it shows
t@null (l@8) terminated by signal SEGV (no mapping at the fault address)
0xffffffffffffffff: <bad address 0xffffffffffffffff>
dbx: core file read error: address 0xfc4ffe48 not in data space
Current function is dbMtBaseClass::Pswd_Change
7860 sqlcxt(&_dbMtCtx, &sqlctx, &sqlstm, &sqlfpn);
if I remove any of the three EXEC SQL CLOSE commands , core dump does not occurs.
It looks strange.Please help me to resolve the issue. -
Studio 12 DBX internal error while memcheck is on.
bash-3.00$ dbx -xexec32
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.6' in your .dbxrc
(dbx) -rwxr-xr-x 1 orbit osgrp1 1.2M Dec 26 17:18 <my_processnmae>
-rwxr-xr-x: not found
(dbx) dbxenv mt_sync_tracking off
(dbx) attach 6792 <this is pid>
Reading <my_processname>
Reading ld.so.1
Reading librtc.so
Reading libmapmalloc.so.1
Reading libcurses.so.1
Reading libnsl.so.1
Reading libsocket.so.1
Reading libelf.so.1
Reading libcrypt_i.so.1
Reading libpthread.so.1
Reading libdl.so.1
Reading librt.so.1
Reading libc.so.1
Reading libgen.so.1
Reading libaio.so.1
Reading libmd5.so.1
Reading libc_psr.so.1
Reading library_name**
Reading library_name**
Attached to process 6792 with 3 LWPs
t@1 (l@1) stopped in soaccept at 0xff040314
0xff040314: soaccept+0x0004: ta %icc,0x00000008
Current function is Tcp_receive
284 if ((th_data->sockfd = accept (sockfd, (struct sockaddr *)&clientaddr,&length)) == -1)
(dbx) check -access
access checking - ON
RTC: Enabling Error Checking...
RTC: Running program...
(dbx) cont
RTC: internal RTC error -- disabling Error Checking file: rtc_heap_map.c line: 697
^Ct@2 (l@2) signal INT (Interrupt) in ___sigtimedwait at 0xff040220
0xff040220: ___sigtimedwait+0x0004: ta %icc,0x00000008
Current function is sig_thr
1256 sigwait (&glb_sigact, &signal_alr);
(dbx) version
Machine hardware: sun4u
OS version: 5.10
Processor type: sparc
Hardware: SUNW,Sun-Fire-280R
The following components are installed on your system:
Sun Studio 12
Sun Studio 12 C Compiler
Sun Studio 12 C++ Compiler
Sun Studio 12 Tools.h++ 7.1
Sun Studio 12 C++ Standard 64-bit Class Library
Sun Studio 12 Garbage Collector
Sun Studio 12 Fortran 95
Sun Studio 12 Debugging Tools (including dbx)
Sun Studio 12 IDE
Sun Studio 12 Debugger GUI
Sun Studio 12 Performance Analyzer (including collect, ...)
Sun Studio 12 X-Designer
Sun Studio 12 VIM editor
Sun Studio 12 XEmacs editor
Sun Studio 12 Performance Library
Sun Studio 12 LockLint
Sun Studio 12 Building Software (including dmake)
Sun Studio 12 Documentation Set
Sun Studio 12 /usr symbolic links and GNOME menu item
version of "/opt/SunStudio12/SUNWspro/bin/../prod/bin/../../bin/cc": Sun C 5.9 SunOS_sparc 2007/05/03
version of "/opt/SunStudio12/SUNWspro/bin/../prod/bin/../../bin/CC": Sun C++ 5.9 SunOS_sparc 2007/05/03
version of "/opt/SunStudio12/SUNWspro/bin/../prod/bin/../../bin/f90": Sun Fortran 95 8.3 SunOS_sparc 2007/05/03
version of "/opt/SunStudio12/SUNWspro/bin/../prod/bin/../../bin/dbx": Sun Dbx Debugger 7.6 SunOS_sparc 2007/05/03
version of "/opt/SunStudio12/SUNWspro/bin/../prod/bin/../../bin/analyzer": Sun Analyzer 7.6 SunOS_sparc 2007/05/03
version of "/opt/SunStudio12/SUNWspro/bin/../prod/bin/../../bin/dmake": Sun Distributed Make 7.8 SunOS_sparc 2007/05/03
any Idea ?
am i doing something wrong here. ? I want to check memory leak. ?
-RaxitWith hope if its bug, below may helpful.
(dbx) (dbx) (dbx) quit
detaching from process 6792
dbx: internal warning: function (__rtc_release_heap_region) called too early (preloading)
t@3 (l@3) signal SEGV (no mapping at the fault address) in _sleep at 0xff0330f0
0xff0330f0: _sleep+0x0078: ldsb [%o3 - 3005], %o2
Current function is scansessionisam_thr
1362 sleep (cfg_sec_shm_scantime); /*SCF no 10750 */
execution completed, exit code is 4982056
dbx: internal warning: rtc: _syscall: failed
dbx: warning: librtc.so and dbx version mismatch; Error checking disabled
Check your installation of librtc.so.
dbx: internal warning: rtc: munmap of patch area of segment '/usr/lib/libmapmalloc.so.1' failed
dbx: internal error: signal SIGSEGV (no mapping at the fault address)
dbx's coredump will appear in /tmp
ls -lrAbort (core dumped)
bash-3.00$ pstack /tmp/core
core '/tmp/core' of 6794: dbx -xexec32
ff1c0f90 lwpkill (6, 0, ff1a4a98, ffffffff, ff1e8284, 6) + 8
ff13ff98 abort (0, 1, 377d74, a83f0, ff1eb298, 0) + 110
000b5bf8 ???????? (b, 3c4400, 4575a1, 38b1f4, 37eabe, 1)
ff1bfec8 __sighndlr (b, ffbff408, ffbff150, b59ec, 0, 1) + c
ff1b4ff4 call_user_handler (b, 0, 8, 0, ff252000, ffbff150) + 3b8
001aef98 __1cGRtcMgrShandle_proc_detach6M_v_ (47d670, 5dd2a8, 38, 396000, 4c0498, 38) + d8
0018f850 __1cEProcGdetach6Mbbbb_v_ (4c0468, 467400, 466400, 0, 3ae2ac, 0) + 19c
000b8c68 ???????? (47e6f8, 0, 0, 0, 0, 1)
00289d94 __1cMpdksh_c_exit6FpnGInterp_ippcpv_i_ (47e6f8, 0, 876890, 0, 0, 466000) + a8
0015fbf4 ???????? (47e6f8, 1, 876890, 0, 877b78, 0)
002857a0 ???????? (47e6f8, 877b78, 877b58, 876890, 0, 467708)
0028468c __1cNpdksh_execute6FpnGInterp_pnCop_i_i_ (47e6f8, 49bab8, 0, 277c50, 47e6f8, 38b1f4) + 194
002735e0 __1cLpdksh_shell6FpnGInterp_pnGSource__i_ (47e6f8, 49e098, 465628, 446f54, 3d9625, 3d962c) + 46c
000b90d4 __1cNmain_cmd_loop6FpnGInterp__v_ (47e6f8, 37f400, 3ca2a4, 446f70, 3ca000, 3ca000) + 88
000b9e60 main (37e400, 0, 40, 47e6f8, 37f7c8, 1) + 750
000af268 _start (0, 0, 0, 0, 0, 0) + 108
bash-3.00$
bash-3.00$ dbx /opt/SunStudio12/
SUNWspro/ uninstall_Sun_Studio_12.class
bash-3.00$ dbx /opt/SunStudio12/SUNWspro/bin/dbx /tmp/core
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.6' 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 libc_psr.so.1
Reading libcpc.so.1
Reading libpctx.so.1
Reading libnvpair.so.1
Reading libdevinfo.so.1
Reading libproc.so.1
Reading librtld_db.so.1
Reading libelf.so.1
Reading libctf.so.1
program terminated by signal ABRT (Abort)
0xff1c0f90: __lwp_kill+0x0008: bcc,a,pt %icc,__lwp_kill+0x18 ! 0xff1c0fa0
(dbx) threads
dbx: thread related commands not available
(dbx) where
=>[1] __lwp_kill(0x0, 0x6, 0x0, 0x6, 0xfc00, 0x0), at 0xff1c0f90
[2] raise(0x6, 0x0, 0xff1a4a98, 0xffffffff, 0xff1e8284, 0x6), at 0xff15fd78
[3] abort(0x0, 0x1, 0x377d74, 0xa83f0, 0xff1eb298, 0x0), at 0xff13ff98
[4] 0xb5bf8(0xb, 0x3c4400, 0x4575a1, 0x38b1f4, 0x37eabe, 0x1), at 0xb5bf8
[5] __sighndlr(0xb, 0xffbff408, 0xffbff150, 0xb59ec, 0x0, 0x1), at 0xff1bfec8
---- called from signal handler with signal 11 (SIGSEGV) ------
[6] RtcMgr::handle_proc_detach(0x47d670, 0x5dd2a8, 0x38, 0x396000, 0x4c0498, 0x38), at 0x1aef98
[7] Proc::detach(0x4c0468, 0x467400, 0x466400, 0x0, 0x3ae2ac, 0x0), at 0x18f850
[8] 0xb8c68(0x47e6f8, 0x0, 0x0, 0x0, 0x0, 0x1), at 0xb8c68
[9] pdksh_c_exit(0x47e6f8, 0x0, 0x876890, 0x0, 0x0, 0x466000), at 0x289d94
[10] 0x15fbf4(0x47e6f8, 0x1, 0x876890, 0x0, 0x877b78, 0x0), at 0x15fbf4
[11] 0x2857a0(0x47e6f8, 0x877b78, 0x877b58, 0x876890, 0x0, 0x467708), at 0x2857a0
[12] pdksh_execute(0x47e6f8, 0x49bab8, 0x0, 0x277c50, 0x47e6f8, 0x38b1f4), at 0x28468c
[13] pdksh_shell(0x47e6f8, 0x49e098, 0x465628, 0x446f54, 0x3d9625, 0x3d962c), at 0x2735e0
[14] main_cmd_loop(0x47e6f8, 0x37f400, 0x3ca2a4, 0x446f70, 0x3ca000, 0x3ca000), at 0xb90d4
[15] main(0x37e400, 0x0, 0x40, 0x47e6f8, 0x37f7c8, 0x1), at 0xb9e60
(dbx)
-Raxit -
We are getting bad address core dump while using Coherence lib .
Please find the dbx stack trace below in .
@null (l@9) terminated by signal SEGV (no mapping at the fault address)
0xffffffffffffffff: <bad address 0xffffffffffffffff>
(dbx) where
[1] 0xfa666f08(0xf71f8940, 0x28ec9c8, 0xf71f8930, 0x18, 0x8, 0xf71f8880), at 0xfa666f08
[2] 0xfa662da8(0xf71f8ab0, 0x28ec9c8, 0xf71f89b0, 0xf71f8940, 0x154396e8, 0xfdf88a80), at 0xfa662da8
[3] 0xfa414a6c(0xf71f8ab0, 0x28ec9d0, 0xf71f8aa0, 0xf71f91e0, 0x0, 0xf71f89b0), at 0xfa414a6c
[4] 0xfaba8c78(0x28ec9c8, 0xf71f8c20, 0x0, 0xf71f8b80, 0xf71f8ab0, 0x1), at 0xfaba8c78
[5] 0xfb1f6b8c(0xf71f9190, 0xf71f91e0, 0xf71f8c20, 0xf71f91a0, 0xf71f8c30, 0x28af100), at 0xfb1f6b8c
[6] 0xfb1f2af0(0x28aaeb0, 0xf71f91a0, 0x0, 0x1, 0xf71f9190, 0xfb1df870), at 0xfb1f2af0
[7] 0xfb1f5c48(0x28aaeb0, 0x569fb10, 0xf71f9270, 0xf71f9280, 0xf71f9280, 0xf71f9360), at 0xfb1f5c48
[8] 0xfad25bd0(0x289f3b8, 0xf71f9360, 0xf71f9360, 0xf71f92f0, 0x1, 0xf71f9360), at 0xfad25bd0
[9] 0xfabf44c0(0x569fb10, 0xfb1fefd4, 0xfeb88ae0, 0xf71f9360, 0xfabf309c, 0xfeaae700), at 0xfabf44c0
[10] 0xfa8a3d70(0x289f228, 0xf71f9460, 0xf71f9420, 0xf71f9430, 0xfdf88a80, 0xf71f9460), at 0xfa8a3d70
[11] 0xfa8a338c(0x289f228, 0xf71f9540, 0xf71f9540, 0xf71f94d0, 0x1, 0xf71f95c0), at 0xfa8a338c
[12] 0xfa7c1dd8(0x25b6ef8, 0x7f13700, 0xf71f9540, 0xf71f95c0, 0xf71f9550, 0x289f2a0), at 0xfa7c1dd8
[13] 0xfabf44c0(0x7f13700, 0xfa7c3a60, 0xfe37b854, 0xf71f95c0, 0xfabf309c, 0xfe37ac90), at 0xfabf44c0
[14] 0xfb2c9184(0xf71f9be0, 0xfdd965d4, 0x0, 0xffffffff, 0x1, 0x0), at 0xfb2c9184
[15] 0xfa8866b4(0x28df150, 0xf71f9d14, 0xf71fa390, 0xfdf88a80, 0x0, 0xf71fa134), at 0xfa8866b4
[16] 0xfa90c320(0x41f30d0, 0xfe476544, 0x28aae50, 0xf71fa380, 0x3, 0xf71fa458), at 0xfa90c320
[17] 0xfad8f044(0x867800, 0x41f3198, 0xf71fb500, 0xf71fa670, 0xf71fb500, 0xf71fa5b0), at 0xfad8f044
[18] 0xfad838dc(0x28aad08, 0xf71fb234, 0xfe7f165c, 0xfdf88a80, 0xf71fad6c, 0xf71fae44), at 0xfad838dc
[19] 0xfb293ed0(0x28dba98, 0x28aad08, 0xc54400, 0xf71fb500, 0xf71fb4d0, 0xfdf88a80), at 0xfb293ed0
[20] 0xfa758038(0x28dbab0, 0xfe6ea03c, 0xfe6ea03c, 0xf71fb5a0, 0x1, 0xf71fb5c0), at 0xfa758038
[21] 0xfa9d9918(0xf71fbed0, 0x28dbdc0, 0xfdf88a80, 0x28e05b8, 0xf71fbf28, 0xfe4eab9c), at 0xfa9d9918
[22] 0xfa614f74(0x17be110, 0xf71fc000, 0x0, 0x0, 0xfa629ee8, 0xfe275df0), at 0xfa614f74
Without Coherence lib we don't see these kind of bad address core dumpsSome time we do see below stack trace caused by coherence ,
Current function is coherence::native::NativeAtomic64::peek
79 return m_lAtomic;
(dbx) where
=>[1] coherence::native::NativeAtomic64::peek(this = 0x3844119f), line 79 in "NativeAtomic64.hpp"
[2] coherence::lang::Object::_detach(this = 0x38441197, fEscaped = false), line 761 in "Object.hpp"
[3] 0xfa2a7fc0(0x3192d5b0, 0x0, 0xc0000000, 0xfdf88a80, 0x0, 0x4f5ca40), at 0xfa2a7fc0
[4] 0xfa7c5570(0x3192d528, 0x1, 0x1000, 0x3f1728, 0x3f1400, 0xfdf88a80), at 0xfa7c5570
[5] 0xfab9537c(0x3192d5c8, 0x1ffffe0, 0xfdf88a80, 0x80000000, 0xc0, 0x80), at 0xfab9537c
[6] coherence::lang::Object::_detach(this = 0x3192d5c8, fEscaped = false), line 774 in "Object.hpp"
[7] 0xfa7ccd34(0xf71fa288, 0x2, 0x18, 0xfdf88a80, 0x1, 0x1), at 0xfa7ccd34
[8] 0xfa886744(0x2c0d4e0, 0xf71f9d14, 0xf71f9d14, 0xfdf88a80, 0x0, 0xf71fa134), at 0xfa886744
[9] 0xfa90c320(0x655adb0, 0xfe476544, 0x2bc2a40, 0xf71fa380, 0x2, 0xf71fa458), at 0xfa90c320
[10] 0xfad8f044(0x867800, 0x655ae78, 0xf71fb500, 0xf71fa670, 0xf71fb500, 0xf71fa5b0), at 0xfad8f044
[11] 0xfad838dc(0x2bc28f8, 0xf71fb234, 0xfe7f165c, 0xfdf88a80, 0xf71fad6c, 0xf71fae44), at 0xfad838dc
[12] 0xfb293ed0(0x2c09620, 0x2bc28f8, 0xc54400, 0xf71fb500, 0xf71fb4d0, 0xfdf88a80), at 0xfb293ed0
[13] 0xfa758038(0x2c09638, 0xfe6ea03c, 0xfe6ea03c, 0xf71fb5a0, 0x1, 0xf71fb5c0), at 0xfa758038
[14] 0xfa9d9918(0xf71fbed0, 0x2c09948, 0xfdf88a80, 0x2c0e9c8, 0xf71fbf28, 0xfe4eab9c), at 0xfa9d9918
[15] 0xfa614f74(0x256e910, 0xf71fc000, 0x0, 0x0, 0xfa629ee8, 0xfe275df0), at 0xfa614f74
(dbx)
Please advice.
Maybe you are looking for
-
When I recently updated to iOS 6 I noticed that my ipod was crashing more than usual, especialy on the App Store and Itunes. Then safari started crashing when I updated to iOS 6.01. I have had my ipod for almost a year now and it has been taken wel
-
Nokia Car Mode on N8 - Bluetooth disconnects when ...
After recently upgrading to Belle, I installed Nokia Car Mode because it is what I had been looking forward to the most. However it simply disconnects the Bluetooth connection to my car's audio system a few seconds (maybe 5 seconds) after I enter the
-
Built in BAPI/RFC or FM for Project Information
Hello, Is there any built in RFC or FM which will give project information of the employee depending upon personal number (PERNR) or any other FMs?? Any Help?? Thanks, Prashant
-
CJS-30152 Java process dispatcher of instance RP8/DVEBMGS01 [ABAP: ACTIVE
We are installing an SAP system with HA option. System Info :- OS : RHEL5 Database : Oracle SID : RP8 physical host: cipocvm virtual host : ciRP8 While installing CI ,ABAP+JAVA ABAP Started but JAVA Instance stopped starting in phase "Prepare to inst
-
PDF reader with inverted colors
Do you guys know any pdf reader that's able to invert colors so the eyes won't hurt so much from reading? I've heard foxit reader is able to do that, but there's no 64bit version in packages. Supposedly okular has that function too, but it's qt based