| Date: | Mon, 30 May 2016 14:55:10 -0400 | 
|---|---|
| From: | Bryan Buck <brbuck2503di@xxxxxxxxxx> | 
| Subject: | [DynInst_API:] Crash trying to use StackwalkerAPI | 
| 
 I'm trying to use the StackwalkerAPI in Dyninst 9.1.0, but I'm having some trouble getting started. I'm trying the example code from the manual, but it crashes when I call walkStack() on my Walker object. Does anyone know, is there some initialization I need to perform before using the example code from the manual? Specifically, I'm on Windows x86, using this example code to (try to) walk its own process' stack: 
  std::vector<Frame> stackwalk; 
  string s; 
  Walker *walker=Walker::newWalker(); 
  walker->walkStack(stackwalk); 
  for (unsigned i = 0; i < stackwalk.size (); i++) { 
      stackwalk[i].getName(s); 
      cout << "Found function" << s << endl; 
  } 
As I mentioned, it crashes in the walkStack(). For anyone familiar with the internals of Dyninst, I ask if I need to do some initialization because the crash is in x86-swk.C, in LookupFuncStart::allocatesFrame(), at the line: 
  result = proc->getLibraryTracker()->getLibraryAtAddr(addr, lib); 
It crashes because the result of proc->getLibraryTracker() is NULL. (Which means proc->library_tracker is NULL.) Am I not doing something that is supposed to fill this in? 
I actually used to be a developer on Dyninst and knew these kinds of things, but I see it's changed a lot since I last worked on it! Thanks for any information anyone can give me. 
- Bryan Buck 
 | 
| [← Prev in Thread] | Current Thread | [Next in Thread→] | 
|---|---|---|
  | ||
| Previous by Date: | Re: [DynInst_API:] PIE segfault, Bill Williams | 
|---|---|
| Next by Date: | Re: [DynInst_API:] Crash trying to use StackwalkerAPI, Bill Williams | 
| Previous by Thread: | [DynInst_API:] countdown to 9.2: last call for bug reports/fixes, Bill Williams | 
| Next by Thread: | Re: [DynInst_API:] Crash trying to use StackwalkerAPI, Bill Williams | 
| Indexes: | [Date] [Thread] |