[Lldb-commits] [PATCH] D69273: ValueObject: Fix a crash related to children address type computation

Jim Ingham via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Oct 21 17:20:42 PDT 2019


jingham added a comment.

Except for the comment comment this looks fine.

I think the Host -> Load address code isn't quite right, though it looks like that's not your doing.

The main reason why you would copy a ValueObject into Host memory it is to freeze-dry it as a ConstResult.  Since that is supposed to represent the object at that point in time, it should only be valid to you ask the ValueObject to produce its children if the process is at the same StopID as when the ValueObject was made.  Then the ValueObject system should fetch that more data and include it in the freeze-dried object.  But if the StopID has moved on, you should just give an error: "Can't travel back in time to fetch that extra data".

At the ValueObject level, however, we only know how the data is stored (in Host or Process) and not why.  So it's harder to get this behavior right.

As I said, however, I don't think this planned design was ever carried out successfully, so I don't think this will have broken anything.



================
Comment at: source/Core/ValueObject.cpp:162-163
+    // of the "next" member of LinkedListNode will become load addresses if
+    // we have a live process, or remain what a file address if it what a
+    // file address.
+    if (process_is_alive && is_pointer_or_ref)
----------------
"remain a file address if it was a file address."?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69273/new/

https://reviews.llvm.org/D69273





More information about the lldb-commits mailing list