public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v1] gdb/DAP Fix LazyString not serializable exception
@ 2023-06-23  8:37 Simon Farre
  0 siblings, 0 replies; only message in thread
From: Simon Farre @ 2023-06-23  8:37 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Farre

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-23  8:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-23  8:37 [PATCH v1] gdb/DAP Fix LazyString not serializable exception Simon Farre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).