> I am having a core dump (aix 5.1) which doesnt show back trace.
In which debugger? Sometimes gdb is unable to decode stack trace
when dbx can do so.
> It only shows frame#0 pthread_mutex_destroy().........
> I can not figure out the problem point in my c++ application.
You may have corrupted stack to the point where recovering the
stack trace is impossible.
> What do i need to do?
- Step through your code, periodically executing "where" and see
at which point the stack "disappears".
- Remove application code piece by piece, until you isolate the
problem, or until you arrive at a <100 line test case in which you
do not see the problem but which still crashes. Post it here and
the bug will be revealed.
- Use specialized tools to help you catch all kinds of bugs, e.g.
Insure++ (www.parasoft.com) or ZeroFault (www.zerofault.com)
Cheers,
--
In order to understand recursion you must first understand recursion.
Remove /-nsp/ for email.
> "pankajtakawale" <pankaj....@gmail.com> writes:
>
>> What do i need to do?
>
> - Step through your code, periodically executing "where" and see
> at which point the stack "disappears".
- Use the WDB RTC enhancements to see if WDB can catch your problem.
http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,1662,00.html
I can not use narrow down method u have suggested, as i can not
reproduce problem on my machine. Im facing problem on client side.
One more observation is :
Process is showing very abrupt behaviour.
Last time I faced similar problem on windows 2003.
On 2003, process was showing abrupt behaviour only in case of heavy
memory requirement. But after building application using .Net compiler
(VC7) instead of VC6, problem *disappeared*.
Now on AIX 5.1, memory requirement of process is huge. Do i need to
build application with other compiler? Im usin xlc compiler.
Because same application is running fine on windows .
> I can not use narrow down method u have suggested, as i can not
> reproduce problem on my machine. Im facing problem on client side.
In that case, you should definitely test your app with specialized
tools I mentioned before.
> One more observation is :
> Process is showing very abrupt behaviour.
What the hell does that mean?
> Last time I faced similar problem on windows 2003.
> On 2003, process was showing abrupt behaviour only in case of heavy
> memory requirement. But after building application using .Net compiler
> (VC7) instead of VC6, problem *disappeared*.
You are programming by coincidence:
http://www.awprofessional.com/articles/article.asp?p=31538
Don't do that. The problem most likely didn't disappear, it simply
moved someplace else, where its effect remains hidden.
> Now on AIX 5.1,
And you are posting this to HP-UX group because?
> memory requirement of process is huge.
Do you mean that the app is supposed to take (say) 10MB but instead takes 100?
Did you observe that "unexplained" behaviour on your development machine?
If so, did you investigate it? It is quite likley related to the
problem your client is facing.
> Do i need to
> build application with other compiler? Im usin xlc compiler.
"Randomly" changing compiler or compilation options in hope that
the problem will just disappear is a sure sign of programming
by coincidence.
> Because same application is running fine on windows .
That means nothing: it is quite often the case that many serious
bugs are discovered while porting from one platform to another.
Besides, you *know* that there is a problem on Windows as well,
when the app is compiled with VC6. Did you check your program with
e.g. BoundsChecker on Windows? If not, why not?
thread_twakeup(0x000C08CF, 0x10000000, 0xF00D6348, 0xF013C420,
0x000000EC, 0x00000004, 0x00000018, 0x00000004) = 0x00000000
= 0x10000000
sbrk(0x000000D0) = 0x00000000
Err#12 ENOMEM
sbrk(0x00000090) Err#12 ENOMEM
sbrk(0x000000C0) Err#12 ENOMEM
sbrk(0x00000060) Err#12 ENOMEM
thread_unlock(0x202C6580, 0x207D59A8, 0x00000008, 0x0000D0B2,
0x00000000, 0x10091A17, 0x30091A17, 0x00000000) = 0x00000000
= 0x00000001
thread_waitlock(0x200C04B0, 0x200C04A8, 0x206CF7F0, 0x200C04B0,
0x100C08CF, 0x000C08CF, 0x10091A17, 0x00000005) = 0x00000000
thread_setmystate(0x204A2118, 0x00000000, 0x00000000, 0x00000000,
0x204A236C, 0x204A2374, 0xF013E010, 0x5876D003) = 0x00000000
thread_tsleep(0x00000000, 0x200C04B0, 0x00000000, 0x00000008,
0xF00D627C, 0x200C04A8, 0x204A2528, 0x204A2530) = 0x00000001
thread_twakeup(0x0002F641, 0x10000000, 0xF00D6348, 0xF013C420,
0x000000EC, 0x00000004, 0x00000018, 0x00000004) = 0x00000000
sbrk(0x000000D0) = 0x10000000
Err#12 ENOMEM
sbrk(0x00000090) Err#12 ENOMEM
sbrk(0x000000C0) = 0x00000000
Err#12 ENOMEM
sbrk(0x00000060) = 0x00000000
Err#12 ENOMEM
sbrk(0x000000D0) Err#12 ENOMEM
sbrk(0x00000090) Err#12 ENOMEM
sbrk(0x000000C0) Err#12 ENOMEM
sbrk(0x00000060) Err#12 ENOMEM
Do i need to increase swap space or thread stack size?
> Here is the snippet of truss output
...
> sbrk(0x00000060) Err#12 ENOMEM
>
> Do i need to increase swap space or thread stack size?
Increasing swap might help, but I would not expect it.
You are running out of *heap* space. Check your limits, e.g. 'ulimit
-a' in *sh or 'limit' in *csh.
Also, if your program legitimately needs more then 256M of heap,
read this:
http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm
>> What the hell does that mean?
>>
>>>Process is not dying at particular point.
Why did you prefix your replies with >>> ???
Please don't do that. Rest of the message reformatted.
>> And you are posting this to HP-UX group because?
> I could not find a good group for aix
comp.unix.aix
> Probably I have logical answer why VC7
> compiled application ran fine. for same configuration, memory reqmt
> for VC7 built app is less than that of VC6. Here is explanation
> http://www.codecomments.com/archive373-2005-4-434111.html
That explanation only explains anything if you are relying on
incorrect VC7 behaviour.
If you are, you shouldn't. If you aren't, that thread doesn't
explain anything.
Yes process was running out of heap space. In my local environment I
decreased soft limit of data segment and ran app. truss showed 'sbrk
faild with ENOMEM'. Now Im planning to run app in very heavy
configuration such that 'unlimited data segment' too will be
insufficient. And on same configuration I will make app large addr
space model by setting env variable LDR_CNTRL (app shud run in large
addr space model). And will update thread with results.
Thanks for your valuable help Paul.