<br /><br /><span>Am 20.01.23 19:37 schrieb <b class="name">Bob Friesenhahn </b> <bfriesen@simple.dallas.tx.us>:</span><blockquote cite="mid:alpine.GSO.2.20.2301201232350.20623@scrappy.simplesystems.org" class="iwcQuote" style="border-left: 1px solid #00F; padding-left: 13px; margin-left: 0;" type="cite"><div class="mimetype-text-plain">On Fri, 20 Jan 2023, Carsten Grzemba via oi-dev wrote:<br />><br />>and compile the test source with g++ 7 it works:<br />>./jens<br />>Caught error No namespace info available for XMP prefix `gnome'<br />><a href="http://www.gnome.org/xmp/" target="l">http://www.gnome.org/xmp/</a><br />><br />><br />>and if I compile the test source with g++ 10 it crashes:<br />><br />>./jens<br />>terminate called after throwing an instance of 'Exiv2::BasicError<char>'<br />>what(): No namespace info available for XMP prefix `gnome'<br />>Abort (core dumped)<br />><br />><br />>Anyone how have an idea what the problem here?<br /><br />A problem like this seems most likely to be a mixup of C++ run-time libraries.<br /><br />If any C code is involved in the exception path, then GCC needs to have exceptions enabled while compiling the C code (-fexceptions), except that it may be that GCC for some systems has this option enabled by default.<br /><br />Bob</div></blockquote><span><br /></span><div><span>In the simple example jens.cpp is on top of libexiv2.so only C++ source and here only involved:</span></div><div><span><br /></span></div><div><span>        libexiv2.so.27 =>        /usr/lib/64/libexiv2.so.27<br />        libstdc++.so.6 =>        /usr/gcc/10/lib/amd64/libstdc++.so.6<br />        libm.so.2 =>     /lib/64/libm.so.2<br />        librt.so.1 =>    /lib/64/librt.so.1<br />        libgcc_s.so.1 =>         /usr/gcc/10/lib/amd64/libgcc_s.so.1<br />        libc.so.1 =>     /lib/64/libc.so.1<br />        libnsl.so.1 =>   /lib/64/libnsl.so.1<br />        libsocket.so.1 =>        /lib/64/libsocket.so.1<br />        libexpat.so.1 =>         /usr/lib/64/libexpat.so.1<br />        libz.so.1 =>     /usr/lib/64/libz.so.1<br />        libmp.so.2 =>    /lib/64/libmp.so.2<br />        libmd.so.1 =>    /lib/64/libmd.so.1<br /></span></div><div><span><br /></span></div><div><span>and in the stack trace then only C lib I seen was libc.so.1 <br /></span></div><div><span>therefore the option -fexception would not work in this case.</span></div><div>-- <br signature="separator" /><signatureafterquotedtext></signatureafterquotedtext></div><signatureafterquotedtext>Carsten</signatureafterquotedtext>