[ https://issues.apache.org/jira/browse/MESOS-9393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16688874#comment-16688874 ]
James Peach commented on MESOS-9393: ------------------------------------ Probably need to ensure that we are building libarchive with {{\-\-with-iconv}}. > Fetcher crashes extracting archives with non-ASCII filenames. > ------------------------------------------------------------- > > Key: MESOS-9393 > URL: https://issues.apache.org/jira/browse/MESOS-9393 > Project: Mesos > Issue Type: Bug > Components: fetcher > Reporter: James Peach > Priority: Critical > > {noformat} > (gdb) bt > #0 0x00007f2ec3827925 in raise () from /lib64/libc.so.6 > #1 0x00007f2ec3829105 in abort () from /lib64/libc.so.6 > #2 0x00007f2ec3e5da5d in __gnu_cxx::__verbose_terminate_handler() () from > /usr/lib64/libstdc++.so.6 > #3 0x00007f2ec3e5bbe6 in ?? () from /usr/lib64/libstdc++.so.6 > #4 0x00007f2ec3e5bc13 in std::terminate() () from /usr/lib64/libstdc++.so.6 > #5 0x00007f2ec3e5bd0e in __cxa_throw () from /usr/lib64/libstdc++.so.6 > #6 0x00007f2ec3e00837 in std::__throw_logic_error(char const*) () from > /usr/lib64/libstdc++.so.6 > #7 0x00007f2ec3e3be59 in ?? () from /usr/lib64/libstdc++.so.6 > #8 0x00007f2ec3e3bf33 in std::basic_string<char, std::char_traits<char>, > std::allocator<char> >::basic_string(char const*, std::allocator<char> > const&) () > from /usr/lib64/libstdc++.so.6 > #9 0x0000555f5e843a6d in archiver::extract (source=..., > > destination="/tmp/mesos/slaves/04f97156-23b7-4411-8fa7-bdec71518221-S1320/frameworks/156b4459-4bb6-460b-89e5-d8c583dee257-0413/executors/cstapper-test-service.simple-pod.test.0.ti9dgngkdceq2_0/runs/4a2a188e-54ef-4"..., > flags=<optimized out>) at ../../3rdparty/stout/include/stout/archiver.hpp:130 > #10 0x0000555f5e859f06 in extract > (sourcePath="/tmp/mesos/fetch/siri/c3-ace-inspector.tar.gz", > > destinationDirectory="/tmp/mesos/slaves/04f97156-23b7-4411-8fa7-bdec71518221-S1320/frameworks/156b4459-4bb6-460b-89e5-d8c583dee257-0413/executors/cstapper-test-service.simple-pod.test.0.ti9dgngkdceq2_0/runs/4a2a188e-54ef-4"...) > at ../../src/launcher/fetcher.cpp:86 > {noformat} > {noformat} > (gdb) p (struct archive_string_conv > *)archive_string_conversion_to_charset(entry->archive, "UTF-8", 1) > $1 = (struct archive_string_conv *) 0x7fe599cd2be0 > (gdb) p &entry->ae_pathname > $2 = (struct archive_mstring *) 0x7fe599c48010 > (gdb) p (int)archive_strncpy_l(&($2->aes_utf8), $2->aes_mbs.s, > $2->aes_mbs.length, $1) > $3 = -1 > {noformat} > So archive_strncpy_l() fails with -1. best_effort_strncat_in_locale() has > this wonky-looking code: > {noformat} > 2235 remaining = length; > 2236 itp = (const uint8_t *)_p; > 2237 while (*itp && remaining > 0) { > 2238 if (*itp > 127) { > 2239 // Non-ASCII: Substitute with suitable replacement > 2240 if (sc->flag & SCONV_TO_UTF8) { > 2241 if (archive_string_append(as, utf8_replacement_char, > sizeof(utf8_replacement_char)) == NULL) { > 2242 __archive_errx(1, "Out of memory"); > 2243 } > 2244 } else { > 2245 archive_strappend_char(as, '?'); > 2246 } > 2247 return_value = -1; > 2248 } else { > 2249 archive_strappend_char(as, *itp); > 2250 } > 2251 ++itp; > 2252 } > (gdb) break best_effort_strncat_in_locale > Breakpoint 2 at 0x56143c85ff70: file libarchive/archive_string.c, line 2213. > (gdb) p (int)archive_strncpy_l(&($2->aes_utf8), $2->aes_mbs.s, > $2->aes_mbs.length, $1) > ... > (gdb) > 2237 while (*itp && remaining > 0) { > (gdb) > 2238 if (*itp > 127) { > (gdb) > 2240 if (sc->flag & SCONV_TO_UTF8) { > (gdb) > 2241 if (archive_string_append(as, > utf8_replacement_char, sizeof(utf8_replacement_char)) == NULL) { > (gdb) > 2251 ++itp; > (gdb) > 2237 while (*itp && remaining > 0) { > (gdb) > 2247 return_value = -1; > (gdb) p *itp > $5 = 195 '\303' > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)