Example #1
0
 def fCreateAndAddStackFrame(
     oStack,
     uNumber,
     sCdbSymbolOrAddress,
     uInstructionPointer,
     uReturnAddress,
     uAddress,
     sUnloadedModuleFileName,
     oModule,
     uModuleOffset,
     oFunction,
     uFunctionOffset,
     sSourceFilePath=None,
     uSourceFileLineNumber=None,
 ):
     # frames must be created in order:
     assert uNumber == len(oStack.aoFrames), \
         "Unexpected frame number %d vs %d" % (uNumber, len(oStack.aoFrames))
     uMaxStackFramesCount = dxBugIdConfig["uMaxStackFramesCount"]
     oStackFrame = cStackFrame(
         oStack,
         uNumber,
         sCdbSymbolOrAddress,
         uInstructionPointer,
         uReturnAddress,
         uAddress,
         sUnloadedModuleFileName,
         oModule,
         uModuleOffset,
         oFunction,
         uFunctionOffset,
         sSourceFilePath,
         uSourceFileLineNumber,
     )
     oStack.aoFrames.append(oStackFrame)
Example #2
0
 def fCreateAndAddStackFrame(oStack, oCrashInfo, uNumber, uAddress, sCdbModuleId, uModuleOffset, sSymbol, uSymbolOffset):
   # frames must be created in order:
   assert uNumber == len(oStack.aoFrames), \
       "Unexpected frame number %d vs %d" % (uNumber, len(oStack.aoFrames));
   uMaxStackFramesCount = dxCrashInfoConfig["uMaxStackFramesCount"];
   assert uNumber < uMaxStackFramesCount, \
       "Unexpected frame number %d (max %d)" % (uNumber, uMaxStackFramesCount);
   if uNumber == uMaxStackFramesCount - 1:
     oStack.bPartialStack = True; # We leave the last one out so we can truely say there are more.
   else:
     if sCdbModuleId == "SharedUserData":
       # "ShareUserData" is a symbol outside of any module that gets used as a module name in cdb.
       # Any value referencing it must be converted to an address:
       sBaseSymbol = "SharedUserData";
       if sSymbol: sBaseSymbol += "!%s" % sSymbol;
       uAddress = oCrashInfo.fuEvaluateExpression(sBaseSymbol);
       if uModuleOffset: uAddress += uModuleOffset;
       if uSymbolOffset: uAddress += uSymbolOffset;
       # Clean up:
       sCdbModuleId = None;
       uModuleOffset = None;
       sSymbol = None;
       uSymbolOffset = None;
     oModule = sCdbModuleId and oStack.oProcess.foGetModule(sCdbModuleId);
     oFunction = oModule and sSymbol and oModule.foGetOrCreateFunction(sSymbol);
     oStack.aoFrames.append(cStackFrame(uNumber, uAddress, oModule, uModuleOffset, oFunction, uSymbolOffset));
Example #3
0
 def fCreateAndAddStackFrame(oStack, oCdbWrapper, doModules_by_sCdbId,
                             uNumber, uAddress, sUnloadedModuleFileName,
                             sModuleCdbId, uModuleOffset, sSymbol,
                             uSymbolOffset):
     # frames must be created in order:
     assert uNumber == len(oStack.aoFrames), \
         "Unexpected frame number %d vs %d" % (uNumber, len(oStack.aoFrames))
     uMaxStackFramesCount = dxBugIdConfig["uMaxStackFramesCount"]
     assert uNumber < uMaxStackFramesCount, \
         "Unexpected frame number %d (max %d)" % (uNumber, uMaxStackFramesCount)
     if uNumber == uMaxStackFramesCount - 1:
         oStack.bPartialStack = True
         # We leave the last one out so we can truely say there are more.
     else:
         if sModuleCdbId == "SharedUserData":
             # "ShareUserData" is a symbol outside of any module that gets used as a module name in cdb.
             # Any value referencing it must be converted to an address:
             sBaseSymbol = "SharedUserData"
             if sSymbol: sBaseSymbol += "!%s" % sSymbol
             uAddress = oCdbWrapper.fuEvaluateExpression(sBaseSymbol)
             if uModuleOffset: uAddress += uModuleOffset
             if uSymbolOffset: uAddress += uSymbolOffset
             # Clean up:
             sModuleCdbId = None
             uModuleOffset = None
             sSymbol = None
             uSymbolOffset = None
         oModule = sModuleCdbId and doModules_by_sCdbId[sModuleCdbId]
         if not oCdbWrapper.bCdbRunning: return None
         oFunction = oModule and sSymbol and oModule.foGetOrCreateFunction(
             sSymbol)
         oStack.aoFrames.append(
             cStackFrame(uNumber, uAddress, sUnloadedModuleFileName,
                         oModule, uModuleOffset, oFunction, uSymbolOffset))
Example #4
0
 def fCreateAndAddStackFrame(oStack, uNumber, sCdbLine, uAddress, sUnloadedModuleFileName, oModule, uModuleOffset, \
     oFunction, uFunctionOffset, sSourceFilePath, uSourceFileLineNumber):
   # frames must be created in order:
   assert uNumber == len(oStack.aoFrames), \
       "Unexpected frame number %d vs %d" % (uNumber, len(oStack.aoFrames));
   uMaxStackFramesCount = dxBugIdConfig["uMaxStackFramesCount"];
   oStackFrame = cStackFrame(uNumber, sCdbLine, uAddress, sUnloadedModuleFileName, oModule, uModuleOffset, \
       oFunction, uFunctionOffset, sSourceFilePath, uSourceFileLineNumber)
   oStack.aoFrames.append(oStackFrame);
Example #5
0
 def fCreateAndAddStackFrame(oStack, uNumber, sCdbSource, uAddress, sUnloadedModuleFileName, oModule, uModuleOffset, oFunction, uFunctionOffset):
   # frames must be created in order:
   assert uNumber == len(oStack.aoFrames), \
       "Unexpected frame number %d vs %d" % (uNumber, len(oStack.aoFrames));
   uMaxStackFramesCount = dxBugIdConfig["uMaxStackFramesCount"];
   assert uNumber < uMaxStackFramesCount, \
       "Unexpected frame number %d (max %d)" % (uNumber, uMaxStackFramesCount);
   if uNumber == uMaxStackFramesCount - 1:
     oStack.bPartialStack = True; # We leave the last one out so we can truely say there are more.
   else:
     oStack.aoFrames.append(cStackFrame(uNumber, sCdbSource, uAddress, sUnloadedModuleFileName, oModule, uModuleOffset, oFunction, uFunctionOffset));
Example #6
0
 def _fAddStackFrame(oSelf, uNumber, uAddress, sCdbModuleId, uModuleOffset, sSymbol, uSymbolOffset):
   # frames must be created in order:
   assert uNumber == len(oSelf.aoFrames), \
       "Unexpected frame number %d vs %d" % (uNumber, len(oSelf.aoFrames));
   uMaxStackFramesCount = dxCrashInfoConfig.get("uMaxStackFramesCount", 50);
   assert uNumber < uMaxStackFramesCount, \
       "Unexpected frame number %d (max %d)" % (uNumber, uMaxStackFramesCount);
   if uNumber == uMaxStackFramesCount - 1:
     oSelf.bPartialStack = True; # We leave the last one out so we can truely say there are more.
   else:
     oModule = sCdbModuleId and oSelf.oProcess.foGetModule(sCdbModuleId);
     oFunction = oModule and sSymbol and oModule.foGetOrCreateFunction(sSymbol);
     oSelf.aoFrames.append(cStackFrame(uNumber, uAddress, oModule, uModuleOffset, oFunction, uSymbolOffset));
Example #7
0
 def _fAddStackFrame(oSelf, uNumber, uAddress, sCdbModuleId, uModuleOffset,
                     sSymbol, uSymbolOffset):
     # frames must be created in order:
     assert uNumber == len(oSelf.aoFrames), \
         "Unexpected frame number %d vs %d" % (uNumber, len(oSelf.aoFrames))
     uMaxStackFramesCount = dxCrashInfoConfig.get("uMaxStackFramesCount",
                                                  50)
     assert uNumber < uMaxStackFramesCount, \
         "Unexpected frame number %d (max %d)" % (uNumber, uMaxStackFramesCount)
     if uNumber == uMaxStackFramesCount - 1:
         oSelf.bPartialStack = True
         # We leave the last one out so we can truely say there are more.
     else:
         oModule = sCdbModuleId and oSelf.oProcess.foGetModule(sCdbModuleId)
         oFunction = oModule and sSymbol and oModule.foGetOrCreateFunction(
             sSymbol)
         oSelf.aoFrames.append(
             cStackFrame(uNumber, uAddress, oModule, uModuleOffset,
                         oFunction, uSymbolOffset))
Example #8
0
 def foCreateAndAddStackFrame(
     oStack,
     uIndex,
     sCdbSymbolOrAddress,
     uInstructionPointer,
     uReturnAddress,
     uAddress,
     sUnloadedModuleFileName,
     oModule,
     uModuleOffset,  #TODO naming inconsistency with iOffsetFromStartOfFunction
     oFunction,
     iOffsetFromStartOfFunction,
     sSourceFilePath=None,
     uSourceFileLineNumber=None,
 ):
     # frames must be created in order:
     assert uIndex == len(oStack.aoFrames), \
         "Unexpected frame index %d vs %d" % (uIndex, len(oStack.aoFrames))
     uMaxStackFramesCount = dxConfig["uMaxStackFramesCount"]
     oStackFrame = cStackFrame(
         oStack,
         uIndex,
         sCdbSymbolOrAddress,
         uInstructionPointer,
         uReturnAddress,
         uAddress,
         sUnloadedModuleFileName,
         oModule,
         uModuleOffset,
         oFunction,
         iOffsetFromStartOfFunction,
         sSourceFilePath,
         uSourceFileLineNumber,
     )
     oStack.aoFrames.append(oStackFrame)
     return oStackFrame