ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
I tried with that compile option, but g++ returned an error stating its not supported anymore
Anyway, __cxa_demangle returns null. What is interesting is that this code sample seems to work fine in a single threaded program. The application in question however has 8 threads normally and more are forked when clients connect.
As in "(null)" or NULL? If the latter, then the error is stored in status. If the former, it means that the address does not correctly resolve to a symbol.
Originally Posted by mshindo
So I am wondering if pthreads is the culprit.
What versions are you using? What platform? Is this an open-source project, where we can all diagnose the code? If so, what’s the website/repository? If not, can you get a complete example which exhibits this behavior?
The best way to debug is to slowly increase sample code until “works for me” turns into “doesn’t work for me”. Here is what I had yesterday:
Here we have all sorts of mangling going on (overloading, class methods, namespaces, etc.) and three threads. As expected the order of the backtraces varies on each execution.
If the above works for you, then this means that we have to further add code to make the sample more like your situation. If the above doesn’t work, it means that there is some flaw in your build setup which isn’t there in mine.
Just out of curiosity, your code has a fallback for the cases where demangled==NULL of printing the mangled callstack. Have you tried looking at both (mangled) callstacks to tell if there is a difference between threaded vs. unthreaded? E.g., you could add this code:
I’m glad you got it working, but I don’t understand your solution. What do you mean by “linking with -g02”? I am curious to know what this linker flag does and why it was necessary for you yet not for me.