Segmentation fault , OSF1/TRU64

hi,
i am running a process on a unix machine
(OSF1 inca V5.1 2650 alpha)
which is doing some operations on an oracle database.

somehow this process is going down and produces
coredump about 2-4 times in a day.
after restarting, it continue running without a problem,
then after sometime (1 hour or 20 hour) it goes down again.
(segmantation fault error)

i have nothing more than a core file, and this core file is not giving any useful information although the process is compiled in debug mode.

my question is how can i find out the cause of this problem?
is there anybody to suggest a methodology to deal this kind of problem?

this is the information that i get from core file using dbx.
(ladebug also gives the same thing)

ttcdrv.c and upiprv.c files are not belong to our code/process.
probably they are oracle files
****************************************************
dbx version 5.1
Type 'help' for help.
Core file created by program "mmda"

thread 0x4 signal Segmentation fault at
warning: PC value 0x0 not valid, trying RA
> [ttcdrv:770, 0x3ffbc984c24] cmpeq v0, s6, s6
(dbx) where
0 ttcdrv(0x3ffbc385f94, 0x14025b0c8, 0x0, 0x14025d4e8, 0x1401c7000) ["ttcdrv.c":770, 0x3ffbc984c24]
1 nstimsbf_SetBrokeFunction(0x0, 0x140307f38, 0x3ffbc44a484, 0x14025b0c8, 0x140312868) ["nstim.c":626, 0x3ffbc7eb924]
2 upirtrc(0x3ffbc3c51f8, 0x3ff00000000, 0x14025ec40, 0x1403128e8, 0x1) ["upiprv.c":1016, 0x3ffbc3860e4]
(dbx) exit
**********************************************************

it seems to be an oracle problem, which can be for many reasons.
I would advise you to try two things. first if you have truss run the command when running the process.
Secondly if you are using a manual debbuger, then type script file before using it, and send me the complete output of the debuggers run.

this is the truss output, do you have any idea what can cause
FLTBOUNDS error?

write(2, " [ W e d F e b 1 4 ".., 74) = 74
write(6, "01 i\0\006\0\0\0\0\003 ^".., 361) = 361
read(6, "01 y\0\006\0\0\0\0\0101D".., 2064) = 377
gettimeofday(0x000000011FFF9928, 0x00000000) = 0
write(6, "\0 +\0\006\0\0\0\0\003 N".., 43) = 43
read(6, "01A9\0\006\0\0\0\0\0101D".., 2064) = 425
Incurred fault #32, FLTBOUNDS %pc = 0x0000000000000000 addr = 0x000000011FFF2C20
Received signal #11, SIGSEGV [default]
siginfo: SIGSEGV SEGV_MAPERR addr=0x0000000000000000
Err#139 Error 139 occurred.

FLTBOUNDS is an invalid floating point number, usually a +- inf value.
For example, if you're using a float (not a double) datatype it's easy to exceed the range supported by the datatype.
See limits.h for the values of these defines:
FLT_DIG
DBL_DIG
FLT_MAX
FLT_MIN

The DIG values reflect precision, MAX & MIN reflect range.

Using the float datatype with Oracle usually results in bad things. My experience is that it is REALLY hard to get an Oracle process to dump core, except when you pass complete garbage, NULL pointers, or datafile corruption. Add some print statements to see what your code is passing to Oracle. It looks like it is reading a file - what file is assigned fd 6?
The answer lives in the truss output above what you showed us.