BladeSystem Forums have moved here
To make BladeSystem information easier to find, we have moved the BladeSystem forums here, to Servers and Operating Systems.
Languages and Scripting
Showing results for 
Search instead for 
Do you mean 

Segmentation fault, dlopen ,aCC -AA -Ae

SOLVED
Go to Solution
Highlighted
Occasional Contributor

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
}



4 REPLIES
Acclaimed Contributor

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.

Occasional Contributor

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

thanks, i will try it.
Occasional Contributor

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.
Acclaimed Contributor

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.