Hi,
I am trying to debug a C++ program with gdb on Linux
AS 2.1. when the program terminates,the destructor is
called and this destructor in turn calls the
un-initializer routine.After the Un-inilization
routine is over it does not give core dump.But then it
goes in main and gives core dump.
***************source code starts***********
void SmAgentExample::Sm_UnInit( )
{
int iResult;
printf("Value of pSmApiHandle inside Sm_UnInit is
%x\n",pSmApiHandle);
if ( NULL != pSmApiHandle ) {
Sm_Logout();
//
// UnInitialize the Agent API
//
// Return values:
// SM_AGENTAPI_SUCCESS
// SM_AGENTAPI_FAILURE
// SM_AGENTAPI_NOCONNECTION
iResult = Sm_AgentApi_UnInit( &pSmApiHandle );
if (SM_AGENTAPI_SUCCESS==iResult)
printf ( "Agent Released\n" );
else if (SM_AGENTAPI_FAILURE==iResult)
printf ( "UnInitialzation Failed\n" );
else if (SM_AGENTAPI_NOCONNECTION==iResult)
printf ( "Timeout for server response!\n"
);
}
printf("I am here\n");
login = 0;
}
SmAgentExample::~SmAgentExample()
{
pSmApiHandle = NULL;
printf("Inside destructor\n");
Sm_AgentApi_FreeAttributes(iNumAttributes,
pAttributes);
printf("Before Sm_UnInit function\n");
Sm_UnInit( );
}
int main()
{
.....
.....
while{
switch(input)
case 'q' :
break;
.......
}
a.Sm_UnInit( );
printf ( "Done, thank you for Testing the API.\n"
);
return 0;
}
**************source code ends***********
-------------output of gdb---------
FTP> q
Breakpoint 1, SmAgentExample::Sm_UnInit() (this=0x1)
at smagentexample.cpp:220
220 {
(gdb) s
0x0804a601 in main ()
(gdb) s
Single stepping until exit from function main,
which has no line number information.
Value of pSmApiHandle inside Sm_UnInit is 8052728
Agent Released
I am here
Done, thank you for Testing the API.
Inside destructor
Before Sm_UnInit function
Breakpoint 1, SmAgentExample::Sm_UnInit()
(this=0xbffe5a50) at smagentexample.cpp:220
220 {
(gdb) s
0x0804a601 in main ()
(gdb) s
Single stepping until exit from function main,
which has no line number information.
Value of pSmApiHandle inside Sm_UnInit is 0
I am here
Breakpoint 3, main () at smagentexample.cpp:778
778 }
(gdb) s
0x4021a727 in __libc_start_main () from /lib/libc.so.6
(gdb) s
Single stepping until exit from function
__libc_start_main,
which has no line number information.
Program received signal SIGSEGV, Segmentation fault.
0x403c7112 in ?? (). When i gave bt command it gave:
(gdb) bt
#0 0x403c7112 in ?? ()
#1 0x4021a730 in __libc_start_main () from
/lib/libc.so.6
-------------output of gdb---------------------
Can anybody give any ptrs on this that why it is
dumping core. Thanks in advance.
Regards
Puneet
________________________________________________________________________
Yahoo! India Matrimony: Find your partner online.
Go to http://yahoo.shaadi.com