[PATCH v1] gdb/DAP Fix LazyString not serializable exception
Simon Farre
simon.farre.cx@gmail.com
Fri Jun 23 08:37:25 GMT 2023
Fixed this bug in v1 of a patch that later got removed.
I couldn't reproduce the issue, but now I've found out what it is.
I've reproduced it by basically sending two evaluate requests, "source
prettyprinter.py" (the stdlib pretty printer, to be exact) and "py
register_libstdcxx_printers(gdb.current_objfile())" - i.e. the standard
library pretty printer registering.
That's when an exception is raised by the DAP Python code. It is most
likely because the pretty printers somewhere, for something, returns a
LazyString instead of string.
This patch will make variable references value always be str(...) to
make sure that it converts it to a value that can be serialiable by
json.dumps.
---
gdb/python/lib/gdb/dap/varref.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/python/lib/gdb/dap/varref.py b/gdb/python/lib/gdb/dap/varref.py
index 213151fd3d3..6b12da56c82 100644
--- a/gdb/python/lib/gdb/dap/varref.py
+++ b/gdb/python/lib/gdb/dap/varref.py
@@ -152,7 +152,7 @@ class VariableReference(BaseReference):
def to_object(self):
result = super().to_object()
- result[self.result_name] = self.printer.to_string()
+ result[self.result_name] = str(self.printer.to_string())
num_children = self.child_count()
if num_children is not None:
if (
--
2.41.0
More information about the Gdb-patches
mailing list