<div dir="ltr">I'll look into sorting this out. Strange that no other build bots are using python3 by default.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Sep 10, 2019 at 12:38 PM Adhemerval Zanella <<a href="mailto:adhemerval.zanella@linaro.org">adhemerval.zanella@linaro.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Sterling,<br>
<br>
It in indeed a python3 issue, where it is being used as default on the<br>
bot. Besides the check_literal format issue, python3 next iteration<br>
method has changed its name to __next__ which requires some internal<br>
adjustments. I am not trying to fix a remaining issue with bitset <br>
printer.<br>
<br>
On 09/09/2019 16:24, Adhemerval Zanella wrote:<br>
> At least on my testing it seems the __r_ field does exist:<br>
> <br>
> $ gdb ./gdb_pretty_printer_test.sh.cpp.tmp.exe<br>
> [...]<br>
> (gdb) b string_test<br>
> (gdb) r<br>
> [1]+ Stopped gdb ./gdb_pretty_printer_test.sh.cpp.tmp.exe<br>
> $ fg<br>
> [...]<br>
> Breakpoint 1, string_test () at /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.sh.cpp:135<br>
> 135 std::string short_string("kdjflskdjf");<br>
> (gdb) n<br>
> (gdb) p short_string<br>
> $1 = {<std::__1::__basic_string_common<true>> = {<No data fields>}, static __short_mask = 1, static __long_mask = 1, <br>
> __r_ = {<std::__1::__compressed_pair_elem<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, 0, false>> = {__value_ = {{__l = {__cap_ = 1784965908, <br>
> __size_ = 1802726502, __data_ = 0x666a64 <error: Cannot access memory at address 0x666a64>}, __s = {{__size_ = 20 '\024', __lx = 20 '\024'}, __data_ = "kdjflskdjf"}, __r = {__words = {<br>
> 1784965908, 1802726502, <br>
> 6711908}}}}}, <std::__1::__compressed_pair_elem<std::__1::allocator<char>, 1, true>> = {<std::__1::allocator<char>> = {<No data fields>}, <No data fields>}, <No data fields>}, <br>
> static npos = 4294967295}<br>
> <br>
> The only unexpected thing is for some reason gdb is being stopped just after<br>
> the program start (not sure how it influences the testcase or if it is something<br>
> expected).<br>
> <br>
> Also adding a 'print("VALUE_FIELD: ", value_field)' just after the value_field<br>
> attribution I am seeing:<br>
> <br>
> $ /usr/bin/gdb -nx -batch -iex "set autoload off" -ex "source /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/utils/gdb/libcxx/printers.py" -ex "python register_libcxx_printer_loader()" -ex "source /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.py" gdb_pretty_printer_test.sh.cpp.tmp.exe 2>&1 | tee _out No symbol table is loaded. Use the "file" command. Breakpoint 1 at 0x1179c: file /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.sh.cpp, line 57. Loading libc++ pretty-printers. Cannot parse expression `.L1185 4@r4'. warning: Probes-based dynamic linker interface failed. Reverting to original interface.<br>
> <br>
> [Thread debugging using libthread_db enabled]<br>
> Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".<br>
> FAIL: /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.sh.cpp:137<br>
> GDB printed:<br>
> VALUE_FIELD: {{__l = {__cap_ = 1784965908, __size_ = 1802726502, __data_ = 0x666a64 <error: Cannot access memory at address 0x666a64>}, __s = {{__size_ = 20 '\024', __lx = 20 '\024'}, __data_ = "kdjflskdjf"}, __r = {__words = {1784965908, 1802726502, 6711908}}}}<br>
> "kdjflskdjf"<br>
> Value should match:<br>
> Traceback (most recent call last):<br>
> File "/home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.py", line 64, in invoke<br>
> print(" " + check_literal)<br>
> TypeError: Can't convert 'bytes' object to str implicitly<br>
> terminate called after throwing an instance of 'gdb_exception_RETURN_MASK_ERROR'<br>
> <br>
> <br>
> On 09/09/2019 15:29, Sterling Augustine wrote:<br>
>> I think the encoding failure (which would be python 2 vs 3) is a secondary failure--already deep inside the error handling. The real problem is the <br>
>><br>
>> File "/home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/utils/gdb/libcxx/printers.py", line 221, in to_string<br>
>> value_field = _value_of_pair_first(self.val["__r_"])<br>
>> gdb.error: There is no member named __r_.<br>
>><br>
>> Which means that maybe the test case is getting compiled or linked differently. At least in such a way that the field "__r_" doesn't exist (at least not in debug info). But I would be quite puzzled as to why this bot has a different libcxx build or debug info than all the others.<br>
>><br>
>> On Mon, Sep 9, 2019 at 11:15 AM Adhemerval Zanella <<a href="mailto:adhemerval.zanella@linaro.org" target="_blank">adhemerval.zanella@linaro.org</a> <mailto:<a href="mailto:adhemerval.zanella@linaro.org" target="_blank">adhemerval.zanella@linaro.org</a>>> wrote:<br>
>><br>
>> Hi Sterling,<br>
>><br>
>> Maxim has asked to take a loot at it. The failure is essentially:<br>
>><br>
>> FAIL: /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.sh.cpp:137<br>
>> GDB printed:<br>
>> <incomplete type><br>
>> Value should match:<br>
>> Traceback (most recent call last):<br>
>> File "/home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.py", line 64, in invoke<br>
>> print(" " + check_literal)<br>
>> TypeError: Can't convert 'bytes' object to str implicitly<br>
>><br>
>> I am not sure if it is something related to python2/3. The system does have<br>
>> both installed (python 2.7.12 and 3.5.2, with 2 being the default). I tried<br>
>> to issue the faulty testcase with python3, and it shows the same issue<br>
>><br>
>> I am not very familiar with this code, but trying to make peace with<br>
>> the types by changing it to:<br>
>><br>
>> 52 else:<br>
>> 53 check_literal = expectation_val.string(encoding="utf-8")<br>
>> 54 check_literal_utf8 = check_literal.encode("utf-8")<br>
>> 55 test_fails = value.encode("utf-8") != check_literal_utf8<br>
>><br>
>> Also does not help either. For the change above, the first failure shows:<br>
>><br>
>> FAIL: /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/test/pretty_printers/gdb_pretty_printer_test.sh.cpp:137<br>
>> GDB printed:<br>
>> Traceback (most recent call last):<br>
>> File "/home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv8-linux-noexceptions/llvm/projects/libcxx/utils/gdb/libcxx/printers.py", line 221, in to_string<br>
>> value_field = _value_of_pair_first(self.val["__r_"])<br>
>> gdb.error: There is no member named __r_.<br>
>><br>
>> Value should match:<br>
>> "kdjflskdjf"<br>
>><br>
>> Which indicates that something is still missing here. I am checking if it<br>
>> is possible to give you direct access to the bot.<br>
>><br>
</blockquote></div>