FrobTADS 1.1 is now available. It needs ebuild changes; the compiler sources are integrated into the main package now and building them is enabled by default unless disabled with configure options. "-pthread" needs to be appended to CXXFLAGS for the test suite (FEATURES=test USE=debug) to build correctly with "--as-needed" in the linker flags. Also, libcurl is needed (for the game server functionality - which is not an optional feature.) I am attaching the patch against the 1.0 ebuild. Reproducible: Always
Created attachment 297341 [details, diff] frobtads-1.1.ebuild.patch
*** Bug 401885 has been marked as a duplicate of this bug. ***
If the games herd lacks the time to take care of this, you could put it under maintainer-needed and I will contact proxy-maint to proxy-maintain this package.
Version 1.2 has been released. It's now in the interactive fiction overlay: http://repo.or.cz/w/gentoo-interactive-fiction.git/tree/HEAD:/games-engines/frobtads
Version 1.2.1 released (and is in the overlay.)
+ 23 Aug 2012; Julian Ospald <hasufell@gentoo.org> +frobtads-1.2.1.ebuild, + +files/frobtads-1.2.1-underlinking.patch: + version bump wrt #396449 make check is currently broken, I reported the bug upstream, but there is no bugtracker.
Thanks. Upstream for this is... me. I'll also introduce an autoconf check for pthread so that you won't have to carry any patches.
while you are at it... it seems TADS upstream recommends to add -fno-strict-aliasing anyway in the Makefile http://bugdb.tads.org/view.php?id=163
The test suite fix is now in Git: https://www.assembla.com/code/frobtads/git/changesets/40ef1d46c208642855637b1e04ef2d5b116edbfc So in the next release it will be working again. Yes, -fno-strict-aliasing should also apply to CFLAGS, not just CXXFLAGS. But maybe it's a bogus GCC 4.5 warning that was fixed in later versions. I have GCC 4.6.3 and 4.7.1 installed, and neither of those produce that warning with -Wall.
do all tests succeed for you? I get PASS: test/test_obj Preprocessor test: ansi Preprocessor test: circ Preprocessor test: circ2 Preprocessor test: embed Preprocessor test: define Preprocessor test: ifdef Preprocessor test: concat Preprocessor test: varmacpp PASS: testscripts/test_pp.sh Execution test: basic Execution test: finally Execution test: dstr Execution test: fnredef Execution test: undo Execution test: gotofin Execution test: builtin FAIL: testscripts/test_ex.sh 'Make' test: asi 'Make' test: anon 'Make' test: anonfunc 'Make' test: anonobj 'Make' test: anonvarg 'Make' test: badnest 'Make' test: bignum 'Make' test: bignum2 'Make' test: findreplace 'Make' test: foreach 'Make' test: funcparm 'Make' test: htmlify 'Make' test: ifnil 'Make' test: inh_next 'Make' test: isin 'Make' test: join 'Make' test: lclprop 'Make' test: listprop 'Make' test: lookup 'Make' test: lookup2 'Make' test: lookup3 'Make' test: lookupdef 'Make' test: multidyn 'Make' test: nested 'Make' test: newprop 'Make' test: objloop 'Make' test: opoverload 'Make' test: propaddr 'Make' test: propptr 'Make' test: rexassert 'Make' test: rexreplace 'Make' test: setsc 'Make' test: shr 'Make' test: spec2html 'Make' test: spec2text 'Make' test: split 'Make' test: sprintf 'Make' test: strcomp2 'Make' test: strbuf 'Make' test: substr 'Make' test: unicode 'Make' test: varmac 'Make' test: vector 'Make' test: vector2 'Make' test: vector3 'Make' test: testaddr2 'Make' test: testaddr3 'Make' test: testaddr4 'Make' test: strtpl 'Make' test: listminmax 'Make' test: packstr 'Make' test: packarr 'Make' test: strcomp3 'Make' test: catch 'Make' test: save 'Make' test: html 'Make' test: addlist 'Make' test: listpar 'Make' test: arith 'Make' test: extfunc 'Make' test: objrep 'Make' test: funcrep 'Make' test: conflict 'Make' test: vocext 'Make' test: extern 'Make' test: objmod 'Make' test: gram2 'Make' test: rand 'Make' test: stack 'Make' test: targprop 'Make' test: clone 'Make' test: printexpr 'Make' test: dynctx 'Make' test: vec_pre 'Make' test: symtab 'Make' test: enumprop 'Make' test: modtobj 'Make' test: undef 'Make' test: undef2 'Make' test: newembed 'Make' test: newembederr 'Make' test: triplequote 'Make' test: optargs 'Make' test: optargs_err 'Make' test: optargs_err2 'Make' test: multimethod_dynamic2 'Make' test: multimethod_static2 'Make' test: namedparam 'Make' test: bifptr 'Make' test: setmethod 'Make' test: lclvars 'Make' test: dynamicGrammar 'Make' test: iter 'Restore' test: iter2 PASS: testscripts/all_make.sh Preinit test: preinit PASS: testscripts/test_pre.sh ================================= 1 of 5 tests failed Please report to realnc@gmail.com =================================
The failed test if a 1 byte memory leak at process exit. That's the "finally" test (you can see which one it was in test/out; every failed test generates a *.diff). It only happens when compiling with -O1 or higher. So that means something in the code breaks with the GCC optimizer. With -O0 all seems fine.
(In reply to comment #9) > Yes, -fno-strict-aliasing should also apply to CFLAGS, not just CXXFLAGS. > But maybe it's a bogus GCC 4.5 warning that was fixed in later versions. I > have GCC 4.6.3 and 4.7.1 installed, and neither of those produce that > warning with -Wall. Strike that. The warning is also there with 4.6/4.7. The problem is that it is *only* emitted when building with -fstrict-aliasing. This is very weird, since strict aliasing rules is the default setting to begin with...
Created attachment 322733 [details] gdb session of failing test The leak is in CVmImageLoader::run in the 'argmap' variable. This object is allocated on line vmimage.cpp:852, but not released on line 958. The program does reach line 958, but there, argmap==NULL, and is not released. This seems to me like a compiler bug. Attached gdb session suggest that the compiler has optimized out the variable and the check, and assumed that argmap==NULL on line 958.