--- Begin Message ---
Source: liborcus
Version: 0.17.2-4
Severity: normal
Tags: ftbfs
Dear Maintainer,
The build fails on real hppa hardware (i.e., not qemu):
FAIL orcus-test-xml-mapped (exit status: 139)
============================================================================
Testsuite summary for liborcus 0.17.2
============================================================================
# TOTAL: 10
# PASS: 9
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
Full log is here:
https://buildd.debian.org/status/fetch.php?pkg=liborcus&arch=hppa&ver=0.17.2-4&stamp=1697970148&raw=0
Console output:
do_page_fault() command='orcus-test-xml-' type=15 address=0xf5aca03a in
libc.so.6[f7429000+1bc000]
trap #15: Data TLB miss fault, vm_start = 0xf5ad4000, vm_end = 0xf5ad5000
strace output:
[...]
statx(AT_FDCWD, "../test/xml-mapped/attribute-namespace/input.xml",
AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_BASIC_STATS,
{stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0,
stx_mode=S_IFREG|0644, stx_size=410, ...}) = 0
openat(AT_FDCWD, "../test/xml-mapped/attribute-namespace/input.xml", O_RDONLY)
= 3
mmap2(NULL, 410, PROT_READ, MAP_SHARED, 3, 0) = 0xf7aca000
munmap(0xf56cf000, 345) = 0
close(5) = 0
openat(AT_FDCWD, "out.xml", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 5
write(5, "<?xml version=\"1.0\"?>\n<a:data xm"..., 378) = 378
close(5) = 0
statx(AT_FDCWD, "../test/xml-mapped/attribute-namespace/input.xml",
AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_BASIC_STATS,
{stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0,
stx_mode=S_IFREG|0644, stx_size=410, ...}) = 0
openat(AT_FDCWD, "../test/xml-mapped/attribute-namespace/input.xml", O_RDONLY)
= 5
mmap2(NULL, 410, PROT_READ, MAP_SHARED, 5, 0) = 0xf56ca000
munmap(0xf56ca000, 410) = 0
close(5) = 0
statx(AT_FDCWD, "out.xml", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT,
STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0,
stx_mode=S_IFREG|0644, stx_size=378, ...}) = 0
openat(AT_FDCWD, "out.xml", O_RDONLY) = 5
mmap2(NULL, 378, PROT_READ, MAP_SHARED, 5, 0) = 0xf54d4000
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xf56ca03a} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault
Running under gdb with breaks on __GI_munmap and __GI_memcmp, we have:
Breakpoint 1.1, __GI_munmap () at ../sysdeps/unix/syscall-template.S:120
120 ../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) p/x $r26
$12 = 0xf72ca000
(gdb) bt
#0 __GI_munmap () at ../sysdeps/unix/syscall-template.S:120
#1 0xfa489f84 in boost::interprocess::mapped_region::priv_close
(this=0x1e43c0) at /usr/include/boost/interprocess/mapped_region.hpp:841
#2 0xfa489b28 in boost::interprocess::mapped_region::~mapped_region
(this=0x1e43c0, __in_chrg=<optimized out>)
at /usr/include/boost/interprocess/mapped_region.hpp:276
#3 0xfa48e5d8 in orcus::file_content::impl::~impl (this=0x1e4398,
__in_chrg=<optimized out>) at stream.cpp:152
#4 0xfa48e65c in std::default_delete<orcus::file_content::impl>::operator()
(this=0xf8f02970, __ptr=0x1e4398)
at /usr/include/c++/13/bits/unique_ptr.h:99
#5 0xfa48c814 in std::unique_ptr<orcus::file_content::impl,
std::default_delete<orcus::file_content::impl> >::~unique_ptr (
this=0xf8f02970, __in_chrg=<optimized out>) at
/usr/include/c++/13/bits/unique_ptr.h:404
#6 0xfa484590 in orcus::file_content::~file_content (this=0xf8f02970,
__in_chrg=<optimized out>) at stream.cpp:186
#7 0x000194d0 in operator() (__closure=0xf8f02564,
dump_content="ns0=\"http://ns-1\"\nns1=\"http://ns-2\"\n/ns0:data\n/ns0:data/ns1:entries\n/ns0:data/ns1:entries/ns1:entry\n/ns0:data/ns1:entries/ns1:entry@ns1:date-processed=\"2011-01-03\"\n/ns0:data/ns1:entries/ns1:entry@ns1:"...,
filepath=0x1e4678 "../test/xml-mapped/attribute-namespace/input.xml",
cxt=...) at orcus_test_xml_mapped.cpp:77
#8 0x0001a0fc in (anonymous namespace)::test_mapped_xml_import () at
orcus_test_xml_mapped.cpp:150
#9 0x0001c01c in main () at orcus_test_xml_mapped.cpp:280
(gdb) c
Continuing.
Breakpoint 2, __GI_memcmp (s1=0xf6fb5024, s2=0xf72ca03a, len=1) at memcmp.c:306
306 memcmp.c: No such file or directory.
(gdb) bt
#0 __GI_memcmp (s1=0xf6fb5024, s2=0xf72ca03a, len=1) at memcmp.c:306
#1 0x0001d65c in std::char_traits<char>::compare (
__s1=0xf6fb5024 "a=\"http://ns-1\" xmlns:b=\"http://ns-2\">\n
<b:entries><b:entry b:date-received=\"2011-01-01\"
b:date-processed=\"2011-01-03\" b:received-by=\"JKB\"/><b:entry
b:date-received=\"2011-01-01\" b:date-processed=\"2"...,
__s2=0xf72ca03a <error: Cannot access memory at address 0xf72ca03a>, __n=1)
at /usr/include/c++/13/bits/char_traits.h:399
#2 0x000218d4 in std::basic_string_view<char, std::char_traits<char>
>::compare (this=0xf8f03258,
__str=<error: Cannot access memory at address 0xf72ca03a>) at
/usr/include/c++/13/string_view:345
#3 0x000206dc in std::operator==<char, std::char_traits<char> > (__x="a",
__y=<error: Cannot access memory at address 0xf72ca03a>)
at /usr/include/c++/13/string_view:610
#4 0xfa666714 in std::equal_to<std::basic_string_view<char,
std::char_traits<char> > >::operator() (this=0x65ebc, __x="a",
__y=<error: Cannot access memory at address 0xf72ca03a>) at
/usr/include/c++/13/bits/stl_function.h:378
#5 0xfa4c186c in std::__detail::_Hashtable_base<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, std::vector<char const*, std::allocator<char
const*> > >, std::__detail::_Select1st,
std::equal_to<std::basic_string_view<char, std::char_traits<char> > >,
std::hash<std::basic_string_view<char, std::char_traits<char> > >,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Hashtable_traits<true, false, true> >::_M_key_equals (
this=0x65ebc, __k="a", __n=...) at
/usr/include/c++/13/bits/hashtable_policy.h:1728
#6 0xfa4beeb8 in std::_Hashtable<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, std::vector<char const*, std::allocator<char
const*> > >, std::allocator<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, std::vector<char const*, std::allocator<char
const*> > > >, std::__detail::_Select1st,
std::equal_to<std::basic_string_view<char, std::char_traits<char> > >,
std::hash<std::basic_string_view<char, std::char_traits<char> > >,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true,
false, true> >::find (this=0x65ebc, __k="a") at
/usr/include/c++/13/bits/hashtable.h:1657
#7 0xfa4bc678 in std::unordered_map<std::basic_string_view<char,
std::char_traits<char> >, std::vector<char const*, std::allocator<char c--Type
<RET> for more, q to quit, c to continue without paging--
onst*> >, std::hash<std::basic_string_view<char, std::char_traits<char> > >,
std::equal_to<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, std::vector<char const*, std::allocator<char const*> > > > >::find
(this=0x65ebc, __x="a") at /usr/include/c++/13/bits/unordered_map.h:876
#8 0xfa4b454c in orcus::xmlns_context::push (this=0xf8f02628, key="a",
uri="http://ns-1") at xml_namespace.cpp:238
#9 0xfa697e28 in
orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper::attribute
(this=0xf8f02a88, attr=...)
at ../../include/orcus/sax_ns_parser.hpp:235
#10 0xfa695fd4 in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::attribute (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:570
#11 0xfa69714c in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::element_open (this=0xf8f02b14,
begin_pos=22) at ../../include/orcus/sax_parser.hpp:290
#12 0xfa6948c8 in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::element (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:246
#13 0xfa692da8 in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::body (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:214
#14 0xfa69161c in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::parse (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:182
#15 0xfa68f688 in orcus::sax_ns_parser<orcus::dom::document_tree::impl>::parse
(this=0xf8f02a88)
at ../../include/orcus/sax_ns_parser.hpp:277
#16 0xfa674838 in orcus::dom::document_tree::load (this=0xf8f02974,
strm="<?xml version=\"1.0\"?>\n<a:data xmlns:a=\"http://ns-1\"
xmlns:b=\"http://ns-2\">\n <b:entries><b:entry
b:date-received=\"2011-01-01\" b:date-processed=\"2011-01-03\"
b:received-by=\"JKB\"/><b:entry b:date-recei"...) at dom_tree.cpp:586
#17 0x00019438 in operator() (__closure=0xf8f02564, dump_content="",
filepath=0xf8f02664 "out.xml", cxt=...)
at orcus_test_xml_mapped.cpp:73
--Type <RET> for more, q to quit, c to continue without paging--
#18 0x0001a144 in (anonymous namespace)::test_mapped_xml_import () at
orcus_test_xml_mapped.cpp:151
#19 0x0001c01c in main () at orcus_test_xml_mapped.cpp:280
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
__GI_memcmp (s1=<optimized out>, s2=<optimized out>, len=<optimized out>) at
memcmp.c:346
346 in memcmp.c
(gdb) bt
#0 __GI_memcmp (s1=<optimized out>, s2=<optimized out>, len=<optimized out>)
at memcmp.c:346
#1 0x0001d65c in std::char_traits<char>::compare (
__s1=0xf6fb5024 "a=\"http://ns-1\" xmlns:b=\"http://ns-2\">\n
<b:entries><b:entry b:date-received=\"2011-01-01\"
b:date-processed=\"2011-01-03\" b:received-by=\"JKB\"/><b:entry
b:date-received=\"2011-01-01\" b:date-processed=\"2"...,
__s2=0xf72ca03a <error: Cannot access memory at address 0xf72ca03a>, __n=1)
at /usr/include/c++/13/bits/char_traits.h:399
#2 0x000218d4 in std::basic_string_view<char, std::char_traits<char>
>::compare (this=0xf8f03258,
__str=<error: Cannot access memory at address 0xf72ca03a>) at
/usr/include/c++/13/string_view:345
#3 0x000206dc in std::operator==<char, std::char_traits<char> > (__x="a",
__y=<error: Cannot access memory at address 0xf72ca03a>)
at /usr/include/c++/13/string_view:610
#4 0xfa666714 in std::equal_to<std::basic_string_view<char,
std::char_traits<char> > >::operator() (this=0x65ebc, __x="a",
__y=<error: Cannot access memory at address 0xf72ca03a>) at
/usr/include/c++/13/bits/stl_function.h:378
#5 0xfa4c186c in std::__detail::_Hashtable_base<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, std::vector<char const*, std::allocator<char
const*> > >, std::__detail::_Select1st,
std::equal_to<std::basic_string_view<char, std::char_traits<char> > >,
std::hash<std::basic_string_view<char, std::char_traits<char> > >,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Hashtable_traits<true, false, true> >::_M_key_equals (
this=0x65ebc, __k="a", __n=...) at
/usr/include/c++/13/bits/hashtable_policy.h:1728
#6 0xfa4beeb8 in std::_Hashtable<std::basic_string_view<char,
std::char_traits<char> >, std::pair<std::basic_string_view<char,
std::char_traits<char> > const, std::vector<char const*, std::allocator<char
const*> > >, std::allocator<std::pair<std::basic_string_view<char,
std::char_traits<char> > const, std::vector<char const*, std::allocator<char
const*> > > >, std::__detail::_Select1st,
std::equal_to<std::basic_string_view<char, std::char_traits<char> > >,
std::hash<std::basic_string_view<char, std::char_traits<char> > >,
std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true,
false, true> >::find (this=0x65ebc, __k="a") at
/usr/include/c++/13/bits/hashtable.h:1657
#7 0xfa4bc678 in std::unordered_map<std::basic_string_view<char,
std::char_traits<char> >, std::vector<char const*, std::allocator<char c--Type
<RET> for more, q to quit, c to continue without paging--
onst*> >, std::hash<std::basic_string_view<char, std::char_traits<char> > >,
std::equal_to<std::basic_string_view<char, std::char_traits<char> > >,
std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >
const, std::vector<char const*, std::allocator<char const*> > > > >::find
(this=0x65ebc, __x="a") at /usr/include/c++/13/bits/unordered_map.h:876
#8 0xfa4b454c in orcus::xmlns_context::push (this=0xf8f02628, key="a",
uri="http://ns-1") at xml_namespace.cpp:238
#9 0xfa697e28 in
orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper::attribute
(this=0xf8f02a88, attr=...)
at ../../include/orcus/sax_ns_parser.hpp:235
#10 0xfa695fd4 in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::attribute (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:570
#11 0xfa69714c in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::element_open (this=0xf8f02b14,
begin_pos=22) at ../../include/orcus/sax_parser.hpp:290
#12 0xfa6948c8 in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::element (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:246
#13 0xfa692da8 in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::body (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:214
#14 0xfa69161c in
orcus::sax_parser<orcus::sax_ns_parser<orcus::dom::document_tree::impl>::handler_wrapper,
orcus::sax_parser_default_config>::parse (this=0xf8f02b14) at
../../include/orcus/sax_parser.hpp:182
#15 0xfa68f688 in orcus::sax_ns_parser<orcus::dom::document_tree::impl>::parse
(this=0xf8f02a88)
at ../../include/orcus/sax_ns_parser.hpp:277
#16 0xfa674838 in orcus::dom::document_tree::load (this=0xf8f02974,
strm="<?xml version=\"1.0\"?>\n<a:data xmlns:a=\"http://ns-1\"
xmlns:b=\"http://ns-2\">\n <b:entries><b:entry
b:date-received=\"2011-01-01\" b:date-processed=\"2011-01-03\"
b:received-by=\"JKB\"/><b:entry b:date-recei"...) at dom_tree.cpp:586
#17 0x00019438 in operator() (__closure=0xf8f02564, dump_content="",
filepath=0xf8f02664 "out.xml", cxt=...)
at orcus_test_xml_mapped.cpp:73
--Type <RET> for more, q to quit, c to continue without paging--
#18 0x0001a144 in (anonymous namespace)::test_mapped_xml_import () at
orcus_test_xml_mapped.cpp:151
#19 0x0001c01c in main () at orcus_test_xml_mapped.cpp:280
(gdb) c
Continuing.
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
The fault occurs in __GI_memcmp for an address in the region unmapped with
the call "munmap(0xf56ca000, 410)". This address seems to arise at
hashtable_policy.h:1728.
Exactly the same binary runs successfully under qemu.
Maybe there is a timing issue in the orcus::file_content::~file_content
destructor?
Regards,
Dave Anglin
-- System Information:
Debian Release: trixie/sid
APT prefers buildd-unstable
APT policy: (500, 'buildd-unstable'), (500, 'unstable')
Architecture: hppa (parisc64)
Kernel: Linux 6.1.59+ (SMP w/4 CPU threads)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
--- End Message ---