Re: Segmentation fault, dlopen ,aCC -AA -Ae (304 Views)
Reply
Occasional Contributor
ciwoo
Posts: 7
Registered: ‎08-24-2009
Message 1 of 5 (304 Views)
Accepted Solution

Segmentation fault, dlopen ,aCC -AA -Ae

machime platform:
ia64 HP-UX B.11.23

problem:
when program 'A' use dlopen function to load library 'B', program 'A' may crash

scene description :
program 'A' use dlopen to load dynamic library "B', and "A" and "B" is correct in syntax and

logic,and 'A' is compiled by C language ,and 'B' is complied by C++ language


'A' compile parameter is:
aCC -o A.out -Ae -g +DD64 -mt -dynamic -ldl -lpthread

'B' compile parameter is:
aCC -o B.so -AA -b -mt -Wl,+s -Wl,+vnocompatwarnings +DD64 +Olit=all -Wl,-hsqlca,+allowdups

-w -lunwind -lCsup -lstd_v2

'A" used (aCC -Ae),"B" used (aCC-AA)

print stack as below:

Program terminated with signal 11, Segmentation fault.
SEGV_MAPERR - Address not mapped to object

#0 0xc0000000000e7560:0 in pthread_mutex_destroy+0xc0 ()
from /usr/lib/hpux64/libpthread.so.1
(gdb) where
#0 0xc0000000000e7560:0 in pthread_mutex_destroy+0xc0 ()
from /usr/lib/hpux64/libpthread.so.1
#1 0xc000000000357de0:0 in __thread_mutex_free+0xc0 ()
from /usr/lib/hpux64/libc.so.1
#2 0xc00000000233f370:0 in _HPMutexWrapper::~_HPMutexWrapper()+0xd0 ()
from /usr/lib/hpux64/libstd_v2.so.1
#3 0xc000000006eda1e0:0 in std::basic_streambuf

>::~basic_streambuf () at EIClass.cpp:1
#4 0xc000000006eb6980:0 in

std::basic_stringstream,std::allocator

>::~basic_stringstream ()
at /opt/aCC/include_std/sstream:74
#5 0xc000000006ec8690:0 in EIClass::GetColVal () at EIClass.cpp:1441 //-----------------------> user

function

This problem happened in EIClass::GetColVal () return function,
snippet displayed as below

int EIClass::GetColVal (){

...
...

return 0; //-----------------------> coredump happen
}



Please use plain text.
Acclaimed Contributor
Dennis Handly
Posts: 24,387
Registered: ‎03-06-2006
Message 2 of 5 (304 Views)

Re: Segmentation fault, dlopen ,aCC -AA -Ae

[ Edited ]

>aCC -Ae -g +DD64 -mt -dynamic -ldl -lpthread

You should NOT be using "aCC -Ae". Instead use cc. You don't need -lpthread since you have -mt. Also you shouldn't use -dynamic since it is the default.

>aCC -AA -b -mt -Wl,+s -Wl,+vnocompatwarnings +DD64 +Olit=all -Wl,-hsqlca,+allowdups

+Olit=all is the default, you don't need this.
-Wl,-hsqlca,+allowdups should be split into two ld options: -Wl,-hsqlca -Wl,+allowdups
Why do you have the latter? Any duplicates violate the ODR rule and are illegal.

>-lunwind -lCsup -lstd_v2

This is illegal and doesn't match what's documented for plugins.
http://docs.hp.com/en/14487/distributing.htm#linking
The order is: -lstd_v2 -lCsup -lunwind -lm

This may be the cause. Also have you compiled everything with -mt?

You shouldn't use -w but suppress individual warnings with +Wnnnn.

Please use plain text.
Occasional Contributor
ciwoo
Posts: 7
Registered: ‎08-24-2009
Message 3 of 5 (304 Views)

Re: Segmentation fault, dlopen ,aCC -AA -Ae

thanks, i will try it.
Please use plain text.
Occasional Contributor
ciwoo
Posts: 7
Registered: ‎08-24-2009
Message 4 of 5 (304 Views)

Re: Segmentation fault, dlopen ,aCC -AA -Ae

hello Dennis Handly:
I have a question.

Does it have any problem when a 'C'program call 'C++' shared library with dlopen,
can you give me some suggestions or show me more relalted information, thank you very much.
Please use plain text.
Acclaimed Contributor
Dennis Handly
Posts: 24,387
Registered: ‎03-06-2006
Message 5 of 5 (304 Views)

Re: Segmentation fault, dlopen ,aCC -AA -Ae

>Does it have any problem when a C program call aC++ shared library with dlopen, can you give me some suggestions or show me more related information.

It shouldn't. The URL I provided above shows how to link an aC++ shlib for a plugin.
Please use plain text.
The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation