[ https://issues.apache.org/jira/browse/XERCESC-2031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14007163#comment-14007163 ]
Jimmie Högklint commented on XERCESC-2031: ------------------------------------------ Whoa, that was fast! I applied the patch on top of xercesc 3.1.1 and it works fine. Thanks > Janitor<BinInputStream>::~Janitor() throws in unwind > ---------------------------------------------------- > > Key: XERCESC-2031 > URL: https://issues.apache.org/jira/browse/XERCESC-2031 > Project: Xerces-C++ > Issue Type: Bug > Components: Utilities > Affects Versions: 3.1.1 > Environment: Solaris 10, x86 > Reporter: Jimmie Högklint > Assignee: Alberto Massari > Fix For: 3.2.0 > > > If PosixFileMgr::fileClose() receives an invalid file handler or if its > unable to close a file handler it will throw an exception. If this is done in > an unwind of, for example, Janitor<BinInputStream> noone is around to catch > that exception before the process is terminated. (Leaving a destructor with a > throw during unwind is rewarded with termination of the process) > This happens when variable "streamJanitor" goes out of scope in > ReaderMgr::createReader(...) > Callstack looks like this: > [6] std::terminate(0xfeafd2e3, 0xfe7eb940, 0xfc5c5ce8, 0xfe7eb940, 0x0, > 0xfe7eb940), at 0xfe7d471f > [7] __Cimpl::ex_terminate(0xfedf9290, 0xfee69fd0, 0x2, 0xfe7ec658, > 0xfe7ec4a0, 0x0), at 0xfe7d4b82 > [8] _ex_throw_body(0xfe7ec658, 0xfeafd2e3, 0xfc5c5d60, 0xfe7d546e), at > 0xfe7d5561 > [9] __Crun::ex_throw(0xfe7ec6a4, 0xfed84ab8, 0xfeb04488, 0xfed82da2), at > 0xfe7d54ca > [10] xercesc_3_1::PosixFileMgr::fileClose(this = 0x8f69a18, f = 0xfe3f2d00, > manager = 0x8f69618) (optimized), at 0xfed82e40 (line ~81) in > "PosixFileMgr.cpp" > [11] xercesc_3_1::XMLPlatformUtils::closeFile(theFile = 0xfe3f2d00, memmgr = > 0x8f69618) (optimized), at 0xfeb021b9 (line ~578) in "PlatformUtils.cpp" > [12] xercesc_3_1::BinFileInputStream::~BinFileInputStream(this = 0x91df400) > (optimized), at 0xfeafd2de (line ~64) in "BinFileInputStream.cpp" > [13] __SLIP.DELETER__A(this = 0x91df400, delete = 1) (optimized), at > 0xfeafd53e (line ~61) in "BinFileInputStream.cpp" > [14] xercesc_3_1::Janitor<xercesc_3_1::BinInputStream>::reset(this = > 0xfc5c5e84, p = (nil)) (optimized), at 0xfec16fd6 (line ~90) in "Janitor.c" > [15] xercesc_3_1::Janitor<xercesc_3_1::BinInputStream>::~Janitor(this = > 0xfc5c5e84) (optimized), at 0xfec166f8 (line ~43) in "Janitor.c" > [16] xercesc_3_1::ReaderMgr::createReader(this = 0x930a604, src = CLASS, > _ARG3 = true, refFrom = RefFrom_NonLiteral, type = Type_General, source = > Source_External, calcSrcOfs = false, lowWaterMark = 100U) (optimized), at > 0xfec12ee4 (line ~440) in "ReaderMgr.cpp" > [17] xercesc_3_1::IGXMLScanner::scanReset(this = 0x930a578, src = CLASS) > (optimized), at 0xfec08e7c (line ~1275) in "IGXMLScanner2.cpp" > [18] xercesc_3_1::IGXMLScanner::scanDocument(this = 0x930a578, src = CLASS) > (optimized), at 0xfebfb52e (line ~198) in "IGXMLScanner.cpp" > [19] xercesc_3_1::AbstractDOMParser::parse(this = 0xfc5c6018, source = CLASS) > (optimized), at 0xfec67c34 (line ~545) in "AbstractDOMParser.cpp" > [20] xercesc_3_1::IGXMLScanner::resolveSchemaGrammar(this = 0x9283f68, loc = > 0x93c4b3c, uri = 0x93c5020, ignoreLoadSchema = true) (optimized), at > 0xfec0a8d0 (line ~1859) in "IGXMLScanner2.cpp" > [21] xercesc_3_1::IGXMLScanner::parseSchemaLocation(this = 0x9283f68, > schemaLocationStr = 0x9627e10, ignoreLoadSchema = true) (optimized), at > 0xfec0a0b4 (line ~1727) in "IGXMLScanner2.cpp" > [22] xercesc_3_1::IGXMLScanner::scanStartTagNS(this = 0x9283f68, gotData = > true) (optimized), at 0xfebff71a (line ~2205) in "IGXMLScanner.cpp" > [23] xercesc_3_1::IGXMLScanner::scanContent(this = 0x9283f68) (optimized), at > 0xfebfcb7b (line ~890) in "IGXMLScanner.cpp" > [24] xercesc_3_1::IGXMLScanner::scanDocument(this = 0x9283f68, src = CLASS) > (optimized), at 0xfebfb571 (line ~217) in "IGXMLScanner.cpp" > [25] xercesc_3_1::AbstractDOMParser::parse(this = 0x92e6e50, source = CLASS) > (optimized), at 0xfec67c34 (line ~545) in "AbstractDOMParser.cpp" > [26] xercesc_3_1::DOMLSParserImpl::parse(this = 0x92e6e50, source = > 0xfc5c6718) (optimized), at 0xfec714ce (line ~754) in "DOMLSParserImpl.cpp" > This applies to WindowsFileMgr as well. > If additional information is needed I'm happy to provide it. -- This message was sent by Atlassian JIRA (v6.2#6252) --------------------------------------------------------------------- To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org For additional commands, e-mail: c-dev-h...@xerces.apache.org