Hello!

Some lldb tests, for example test_hello_watchlocation_gmodules, are failed due to UnicodeDecodeError:

Config=x86_64-/home/jenkins/workspace/CS_for_Tizen/custom_test/llvm-x64/bin/clang-5.0
======================================================================
ERROR: test_hello_watchlocation_gmodules 
(TestWatchLocation.HelloWatchLocationTestCase)
   Test watching a location with '-s size' option.
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/lldbtest.py",
 line 1752, in gmodules_test_method
    return attrvalue(self)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/decorators.py",
 line 110, in wrapper
    func(*args, **kwargs)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/decorators.py",
 line 110, in wrapper
    func(*args, **kwargs)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/decorators.py",
 line 110, in wrapper
    func(*args, **kwargs)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/decorators.py",
 line 110, in wrapper
    func(*args, **kwargs)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/decorators.py",
 line 110, in wrapper
    func(*args, **kwargs)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py",
 line 102, in test_hello_watchlocation
    self.runCmd("process continue")
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/lldbtest.py",
 line 2070, in runCmd
    print(self.res.GetError(), file=sbuf)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/test/lldbtest.py",
 line 293, in __exit__
    print(self.getvalue(), file=self.session)
  File 
"/home/jenkins/workspace/CS_for_Tizen/custom_test/lldb/packages/Python/lldbsuite/support/encoded_file.py",
 line 34, in impl
    s = s.decode(encoding)
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xfb in position 257: 
invalid start byte

This error occurs when we try to decode following string:

runCmd: process continue
output: Process 579 resuming
Process 579 stopped
* thread #2, name = 'test_hello_watc', stop reason = watchpoint 1
    frame #0: 0x000000000040150f test_hello_watchlocation_gmodules`do_bad_thing_with_location(char_ptr="\x01$\xad�, new_val='\x01') at main.cpp:40
   37          unsigned what = new_val;
   38          printf("new value written to location(%p) = %u\n", char_ptr, what);
   39          *char_ptr = new_val;
-> 40      }
   41
   42      uint32_t
   43      access_pool (bool flag = false)

Should we ignore such errors?

With the following patch tests are passed:

diff --git a/lldb/packages/Python/lldbsuite/support/encoded_file.py b/lldb/packages/Python/lldbsuite/support/encoded_file.py
index 2c2fef3..6412e76 100644
--- a/lldb/packages/Python/lldbsuite/support/encoded_file.py
+++ b/lldb/packages/Python/lldbsuite/support/encoded_file.py
@@ -31,7 +31,7 @@ def _encoded_write(old_write, encoding):
         # If we were asked to write a `str` (in Py2) or a `bytes` (in Py3) decode it
         # as unicode before attempting to write.
         if isinstance(s, six.binary_type):
-            s = s.decode(encoding)
+            s = s.decode(encoding, 'ignore')
         return old_write(s)
     return impl

Thank you!

BR,
Konstantin Baladurin

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to