From: Waldemar Kozaczuk <[email protected]>
Committer: Waldemar Kozaczuk <[email protected]>
Branch: master

debugging: fix loader.py to handle "osv runqueue" properly

Apparently existing implementation of "osv runqueue" in loader.py
navigates the sched::cpus::runqueue structure which is an rbtree
in a way that started breaking at some point probably with newer
versions of boost.

To fix it we simply use the existing intrusive_set_root_node() method
to help us navigate runqueue in a more resilient way.

Signed-off-by: Waldemar Kozaczuk <[email protected]>

---
diff --git a/scripts/loader.py b/scripts/loader.py
--- a/scripts/loader.py
+++ b/scripts/loader.py
@@ -1489,8 +1489,7 @@ def runqueue(cpuid, node=None):
         cpus = gdb.lookup_global_symbol('sched::cpus').value()
         cpu = cpus['_M_impl']['_M_start'][cpuid]
         rq = cpu['runqueue']
-        p = rq['data_']['node_plus_pred_']
-        node = p['header_plus_size_']['header_']['parent_']
+        node = intrusive_set_root_node(rq)
 
     if node:
         offset = gdb.parse_and_eval('(int)&((sched::thread 
*)0)->_runqueue_link')

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/00000000000085fdd405aa04506f%40google.com.

Reply via email to