@@ -398,9 +398,10 @@ func (s *Symbolizer) processCallstack(e *event.Event) error {
398398 return nil
399399 }
400400
401- proc , ok := s .procs [e .PID ]
401+ pid := e .StackPID ()
402+ proc , ok := s .procs [pid ]
402403 if ! ok {
403- handle , err := windows .OpenProcess (windows .SYNCHRONIZE | windows .PROCESS_QUERY_INFORMATION , false , e . PID )
404+ handle , err := windows .OpenProcess (windows .SYNCHRONIZE | windows .PROCESS_QUERY_INFORMATION , false , pid )
404405 if err != nil {
405406 s .pushFrames (addrs , e )
406407 return err
@@ -410,10 +411,10 @@ func (s *Symbolizer) processCallstack(e *event.Event) error {
410411 err = s .r .Initialize (handle , opts )
411412 if err != nil {
412413 s .pushFrames (addrs , e )
413- return ErrSymInitialize (e . PID )
414+ return ErrSymInitialize (pid )
414415 }
415- proc = & process {e . PID , handle , time .Now (), 1 }
416- s .procs [e . PID ] = proc
416+ proc = & process {pid , handle , time .Now (), 1 }
417+ s .procs [pid ] = proc
417418 }
418419
419420 s .pushFrames (addrs , e )
@@ -442,7 +443,8 @@ func (s *Symbolizer) pushFrames(addrs []va.Address, e *event.Event) {
442443// symbol or module are not resolved, then we
443444// fall back to Debug API.
444445func (s * Symbolizer ) produceFrame (addr va.Address , e * event.Event ) callstack.Frame {
445- frame := callstack.Frame {PID : e .PID , Addr : addr }
446+ pid := e .StackPID ()
447+ frame := callstack.Frame {PID : pid , Addr : addr }
446448 if addr .InSystemRange () {
447449 if s .config .SymbolizeKernelAddresses {
448450 frame .Module = s .r .GetModuleName (windows .CurrentProcess (), addr )
@@ -452,7 +454,7 @@ func (s *Symbolizer) produceFrame(addr va.Address, e *event.Event) callstack.Fra
452454 }
453455
454456 // did we hit this address previously?
455- if sym , ok := s .symbols [e . PID ]; ok {
457+ if sym , ok := s .symbols [pid ]; ok {
456458 if symbol , ok := sym [addr ]; ok {
457459 symCacheHits .Add (1 )
458460 frame .Module , frame .Symbol , frame .ModuleAddress = symbol .module , symbol .symbol , symbol .moduleAddress
@@ -468,7 +470,7 @@ func (s *Symbolizer) produceFrame(addr va.Address, e *event.Event) callstack.Fra
468470 }
469471 if mod == nil {
470472 // our last resort is to enumerate process modules
471- modules := sys .EnumProcessModules (e . PID )
473+ modules := sys .EnumProcessModules (pid )
472474 for _ , m := range modules {
473475 b := va .Address (m .BaseOfDll )
474476 size := uint64 (m .SizeOfImage )
@@ -526,17 +528,17 @@ func (s *Symbolizer) produceFrame(addr va.Address, e *event.Event) callstack.Fra
526528 }
527529 if frame .Module != "" && frame .Symbol != "" {
528530 // store resolved symbol information in cache
529- s .cacheSymbol (e . PID , addr , & frame )
531+ s .cacheSymbol (pid , addr , & frame )
530532 return frame
531533 }
532534 }
533535
534536 debugHelpFallbacks .Add (1 )
535537
536538 // fallback to Debug Help API
537- proc , ok := s .procs [e . PID ]
539+ proc , ok := s .procs [pid ]
538540 if ! ok {
539- handle , err := windows .OpenProcess (windows .SYNCHRONIZE | windows .PROCESS_QUERY_INFORMATION , false , e . PID )
541+ handle , err := windows .OpenProcess (windows .SYNCHRONIZE | windows .PROCESS_QUERY_INFORMATION , false , pid )
540542 if err != nil {
541543 return frame
542544 }
@@ -546,8 +548,8 @@ func (s *Symbolizer) produceFrame(addr va.Address, e *event.Event) callstack.Fra
546548 if err != nil {
547549 return frame
548550 }
549- proc = & process {e . PID , handle , time .Now (), 1 }
550- s .procs [e . PID ] = proc
551+ proc = & process {pid , handle , time .Now (), 1 }
552+ s .procs [pid ] = proc
551553 }
552554
553555 proc .keepalive ()
@@ -564,7 +566,7 @@ func (s *Symbolizer) produceFrame(addr va.Address, e *event.Event) callstack.Fra
564566 }
565567
566568 // store resolved symbol information in cache
567- s .cacheSymbol (e . PID , addr , & frame )
569+ s .cacheSymbol (pid , addr , & frame )
568570
569571 return frame
570572}
0 commit comments