And like I said, sending what amounts to randomized symbol addresses back to your server is not an approach that will do you a lot of good, but feel free to do it. You're basically not going to be able to send only stack frame addresses unless you also know the base addresses of where everything is loaded in memory and use those to calculate relative offsets from the addresses.
-- Terry On Aug 29, 2009, at 8:43 AM, Arnab Ganguly < email@hidden> wrote: Thanks again for all detailed explanation. We are developing application similar to crash reporter but in this case our app sends the stack addresses to our server which resolves the symbol on basis of the address. For Stabs and Dwarf we are able to resolve the application symbols successfully we would like to resolve the system framework symbols as well for which I was asking about the approach need to be taken ?
Is it ok if I use backtrace system calls and populate the stack trace info and pass it to server ? Thanks -A On Sat, Aug 29, 2009 at 9:25 AM, Terry Lambert <email@hidden> wrote:
On Aug 28, 2009, at 7:56 PM, Arnab Ganguly wrote:
Thanks for all help and very much appreciated for your time and patience.
My requirement is to resolve system framework symbols on basis of hex addresses
Actually, no, your problem is whatever it is that's causing you to think you need to resolve the symbols in the first place. You haven't disclosed that information, you've only disclosed that you think the correct solution to the root problem is to do what you are trying to do. There may be other solutions, however.
and this symbols resolves happen in some other box where I have only the binary or the symbol file.The process itself is not running. If I run atos with respect to an hex address representing a system framework address, I get only the address no function name etc...I run "atos address -o Executable" but in case of application specific I do get it resolved properly.The address I take from the Crashreporter logs.
This is going to be hard for you, since we support per-installation ASLR (Address Space Layout Randomization), and it is also possible that even if it's at a known location on the other box, the location of the library may have "slid" due to an allocation conflict or timing, and it's highly unlikely that two boxes will have exactly the same timing, or that the timing will remain constant even on one box, due to power management and thermal behaviour based on ambient thermal conditions, including "just previous" load.
That's why I am wondering how apple crash reporter by using atos is able to resolve.
It resolves on the box where the process is actually running, not on some other box, and it does it while the process image is technically still loaded into memory, and it can look up its address map to see what shared objects there are, and where they are loaded for the process that's doing the crashing.
So what would be the best approach for the above requirement .Suggestions would be very helpful.
Let me know if I can provide you more informaton.
Thanks
-A
Capture a regular crash report, which is going to contain address map information, and then symbolicate your own remaining symbols out of that?
-- Terry
|