** Description changed: parse-xml:parse() results in a segfault when called with: <opt:options> - <opt:parse-external-parsed-entity opt:skip-root-nodes="0" /> + <opt:parse-external-parsed-entity opt:skip-root-nodes="0" /> </opt:options> or with <opt:options> - <opt:parse-external-parsed-entity opt:skip-root-nodes="1" /> + <opt:parse-external-parsed-entity opt:skip-root-nodes="1" /> </opt:options> for that matter. With only <opt:options /> it works. - Reproduce: echo "<page />" > acc.xml zorba -f -q xmlparse.xq - This was tested with the zorba build from revision 10923. - - zorba -f -q xmlparse.xq + $ gdb --args zorba -f -q xmlparse.xq [Thread debugging using libthread_db enabled] <?xml version="1.0" encoding="UTF-8"?> fetch [0]: xs:string(<page /> ) Program received signal SIGSEGV, Segmentation fault. 0xb54e29de in std::basic_istream<char, std::char_traits<char> >::sentry::sentry(std::basic_istream<char, std::char_traits<char> >&, bool) () from /usr/lib/i386-linux-gnu/libstdc++.so.6 + + + also: + + $ valgrind install_dbg/bin/zorba -f -q zorba-files/xmlparse.xq + ==21695== Memcheck, a memory error detector + ==21695== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. + ==21695== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info + ==21695== Command: /home/tillw/code/zorba/install_dbg/bin/zorba -f -q zorba-files/xmlparse.xq + ==21695== + <?xml version="1.0" encoding="UTF-8"?> + fetch [0]: xs:string(<page /> + ) + ==21695== Invalid write of size 4 + ==21695== at 0x6B0AFD3: std::istream::read(char*, int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14) + ==21695== by 0x4EA5B70: zorba::simplestore::FastXmlLoader::readPacket(std::istream&, char*, long) (loader_fast.cpp:242) + ==21695== by 0x4EAAAC1: zorba::simplestore::FragmentXmlLoader::fillBuffer(zorba::FragmentIStream*) (loader_dtd.cpp:161) + ==21695== by 0x4EAB3E2: zorba::simplestore::FragmentXmlLoader::loadXml(zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, + std::char_traits<char>, std::allocator<char> > > const&, zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::char_traits< + char>, std::allocator<char> > > const&, std::istream&) (loader_dtd.cpp:260) + ==21695== by 0x4ECD245: zorba::simplestore::Store::loadDocument(zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::ch + ar_traits<char>, std::allocator<char> > > const&, zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::char_traits<char>, + std::allocator<char> > > const&, std::istream&, zorba::store::LoadProperties const&) (store.cpp:1030) + ==21695== by 0x4A96C87: zorba::FnZorbaParseXmlFragmentIterator::nextImpl(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanSt + ate&) const (parse_fragment_impl.cpp:230) + ==21695== by 0x489381C: zorba::Batcher<zorba::FnZorbaParseXmlFragmentIterator>::produceNext(zorba::store::ItemHandle<zorba::store::It + em>&, zorba::PlanState&) const (plan_iterator.h:535) + ==21695== by 0x4B3D7BA: zorba::PlanIterator::consumeNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanIterator const*, z + orba::PlanState&) (plan_iterator.cpp:109) + ==21695== by 0x49FA142: zorba::TraceIterator::nextImpl(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanState&) const (error + s_and_diagnostics_impl.cpp:102) + ==21695== by 0x4969368: zorba::Batcher<zorba::TraceIterator>::produceNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanS + tate&) const (plan_iterator.h:535) + ==21695== by 0x4B3D7BA: zorba::PlanIterator::consumeNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanIterator const*, z + orba::PlanState&) (plan_iterator.cpp:109) + ==21695== by 0x4B823DA: zorba::flwor::FLWORIterator::bindVariable(unsigned long, zorba::flwor::FlworState*, zorba::PlanState&) const + (flwor_iterator.cpp:1216) + ==21695== Address 0x7406f1c is 4 bytes inside a block of size 280 free'd + ==21695== at 0x4025907: operator delete(void*) (vg_replace_malloc.c:387) + ==21695== by 0x6B0215F: std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream() (in /usr/lib/i386-linux-gnu/libstdc++.s + o.6.0.14) + ==21695== by 0x4778C2C: zorba::internal::fileStreamReleaser(std::istream*) (default_url_resolvers.cpp:86) + ==21695== by 0x4E697E6: zorba::simplestore::StreamableStringItem::~StreamableStringItem() (atomic_items.h:919) + ==21695== by 0x4E69866: zorba::simplestore::StreamableStringItem::~StreamableStringItem() (atomic_items.h:921) + ==21695== by 0x4C775ED: zorba::store::Item::free() (in /home/tillw/code/zorba/install_dbg/lib/libzorba_simplestore.so.2.5.0) + ==21695== by 0x4E0AE39: zorba::store::Item::removeReference() (item.cpp:172) + ==21695== by 0x445768B: zorba::store::ItemHandle<zorba::store::Item>& zorba::store::ItemHandle<zorba::store::Item>::assign<zorba::sto + re::Item>(zorba::store::ItemHandle<zorba::store::Item> const&) (item_handle.h:200) + ==21695== by 0x4456971: zorba::store::ItemHandle<zorba::store::Item>::operator=(zorba::store::ItemHandle<zorba::store::Item> const&) + (item_handle.h:143) + ==21695== by 0x4A96C9C: zorba::FnZorbaParseXmlFragmentIterator::nextImpl(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanSt + ate&) const (parse_fragment_impl.cpp:230) + ==21695== by 0x489381C: zorba::Batcher<zorba::FnZorbaParseXmlFragmentIterator>::produceNext(zorba::store::ItemHandle<zorba::store::It + em>&, zorba::PlanState&) const (plan_iterator.h:535) + ==21695== by 0x4B3D7BA: zorba::PlanIterator::consumeNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanIterator const*, z + orba::PlanState&) (plan_iterator.cpp:109) + ==21695==
-- You received this bug notification because you are a member of Zorba Coders, which is the registrant for Zorba. https://bugs.launchpad.net/bugs/1024033 Title: segfault in parse-xml:parse() Status in Zorba - The XQuery Processor: Confirmed Bug description: parse-xml:parse() results in a segfault when called with: <opt:options> <opt:parse-external-parsed-entity opt:skip-root-nodes="0" /> </opt:options> or with <opt:options> <opt:parse-external-parsed-entity opt:skip-root-nodes="1" /> </opt:options> for that matter. With only <opt:options /> it works. Reproduce: echo "<page />" > acc.xml zorba -f -q xmlparse.xq This was tested with the zorba build from revision 10923. $ gdb --args zorba -f -q xmlparse.xq [Thread debugging using libthread_db enabled] <?xml version="1.0" encoding="UTF-8"?> fetch [0]: xs:string(<page /> ) Program received signal SIGSEGV, Segmentation fault. 0xb54e29de in std::basic_istream<char, std::char_traits<char> >::sentry::sentry(std::basic_istream<char, std::char_traits<char> >&, bool) () from /usr/lib/i386-linux-gnu/libstdc++.so.6 also: $ valgrind install_dbg/bin/zorba -f -q zorba-files/xmlparse.xq ==21695== Memcheck, a memory error detector ==21695== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==21695== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==21695== Command: /home/tillw/code/zorba/install_dbg/bin/zorba -f -q zorba-files/xmlparse.xq ==21695== <?xml version="1.0" encoding="UTF-8"?> fetch [0]: xs:string(<page /> ) ==21695== Invalid write of size 4 ==21695== at 0x6B0AFD3: std::istream::read(char*, int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14) ==21695== by 0x4EA5B70: zorba::simplestore::FastXmlLoader::readPacket(std::istream&, char*, long) (loader_fast.cpp:242) ==21695== by 0x4EAAAC1: zorba::simplestore::FragmentXmlLoader::fillBuffer(zorba::FragmentIStream*) (loader_dtd.cpp:161) ==21695== by 0x4EAB3E2: zorba::simplestore::FragmentXmlLoader::loadXml(zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::char_traits<char>, std::allocator<char> > > const&, zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::char_traits< char>, std::allocator<char> > > const&, std::istream&) (loader_dtd.cpp:260) ==21695== by 0x4ECD245: zorba::simplestore::Store::loadDocument(zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::ch ar_traits<char>, std::allocator<char> > > const&, zorba::rstring<zorba::rstring_classes::rep<zorba::atomic_int, std::char_traits<char>, std::allocator<char> > > const&, std::istream&, zorba::store::LoadProperties const&) (store.cpp:1030) ==21695== by 0x4A96C87: zorba::FnZorbaParseXmlFragmentIterator::nextImpl(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanSt ate&) const (parse_fragment_impl.cpp:230) ==21695== by 0x489381C: zorba::Batcher<zorba::FnZorbaParseXmlFragmentIterator>::produceNext(zorba::store::ItemHandle<zorba::store::It em>&, zorba::PlanState&) const (plan_iterator.h:535) ==21695== by 0x4B3D7BA: zorba::PlanIterator::consumeNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanIterator const*, z orba::PlanState&) (plan_iterator.cpp:109) ==21695== by 0x49FA142: zorba::TraceIterator::nextImpl(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanState&) const (error s_and_diagnostics_impl.cpp:102) ==21695== by 0x4969368: zorba::Batcher<zorba::TraceIterator>::produceNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanS tate&) const (plan_iterator.h:535) ==21695== by 0x4B3D7BA: zorba::PlanIterator::consumeNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanIterator const*, z orba::PlanState&) (plan_iterator.cpp:109) ==21695== by 0x4B823DA: zorba::flwor::FLWORIterator::bindVariable(unsigned long, zorba::flwor::FlworState*, zorba::PlanState&) const (flwor_iterator.cpp:1216) ==21695== Address 0x7406f1c is 4 bytes inside a block of size 280 free'd ==21695== at 0x4025907: operator delete(void*) (vg_replace_malloc.c:387) ==21695== by 0x6B0215F: std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream() (in /usr/lib/i386-linux-gnu/libstdc++.s o.6.0.14) ==21695== by 0x4778C2C: zorba::internal::fileStreamReleaser(std::istream*) (default_url_resolvers.cpp:86) ==21695== by 0x4E697E6: zorba::simplestore::StreamableStringItem::~StreamableStringItem() (atomic_items.h:919) ==21695== by 0x4E69866: zorba::simplestore::StreamableStringItem::~StreamableStringItem() (atomic_items.h:921) ==21695== by 0x4C775ED: zorba::store::Item::free() (in /home/tillw/code/zorba/install_dbg/lib/libzorba_simplestore.so.2.5.0) ==21695== by 0x4E0AE39: zorba::store::Item::removeReference() (item.cpp:172) ==21695== by 0x445768B: zorba::store::ItemHandle<zorba::store::Item>& zorba::store::ItemHandle<zorba::store::Item>::assign<zorba::sto re::Item>(zorba::store::ItemHandle<zorba::store::Item> const&) (item_handle.h:200) ==21695== by 0x4456971: zorba::store::ItemHandle<zorba::store::Item>::operator=(zorba::store::ItemHandle<zorba::store::Item> const&) (item_handle.h:143) ==21695== by 0x4A96C9C: zorba::FnZorbaParseXmlFragmentIterator::nextImpl(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanSt ate&) const (parse_fragment_impl.cpp:230) ==21695== by 0x489381C: zorba::Batcher<zorba::FnZorbaParseXmlFragmentIterator>::produceNext(zorba::store::ItemHandle<zorba::store::It em>&, zorba::PlanState&) const (plan_iterator.h:535) ==21695== by 0x4B3D7BA: zorba::PlanIterator::consumeNext(zorba::store::ItemHandle<zorba::store::Item>&, zorba::PlanIterator const*, z orba::PlanState&) (plan_iterator.cpp:109) ==21695== To manage notifications about this bug go to: https://bugs.launchpad.net/zorba/+bug/1024033/+subscriptions -- Mailing list: https://launchpad.net/~zorba-coders Post to : zorba-coders@lists.launchpad.net Unsubscribe : https://launchpad.net/~zorba-coders More help : https://help.launchpad.net/ListHelp