Package: flightgear-data-base
Version: 3.0.0-1
Severity: grave
Justification: renders package unusable
Control: tags -1 patch

A fresh install (no .fgfs) of amd64 flightgear in current jessie or current sid fails to start:

Program received signal SIGABRT, Aborted.
0x00007ffff1d6f077 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt full
#0 0x00007ffff1d6f077 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
        resultvar = 0
        pid = 25441
        selftid = 25441
#1  0x00007ffff1d70458 in __GI_abort () at abort.c:89
        save_stage = 2
act = {__sigaction_handler = {sa_handler = 0x3020702d77722030, sa_sigaction = 0x3020702d77722030}, sa_mask = {__val = {2319406791620833328, 2319389199435444272, 2314885530818453536, 2314885530818453536, 2314885530818453536, 6731583338252032800, 7378697629483820554, 3472328296331896422, 7378697629483806000, 3472609797883717222, 2337500343188860976, 3472328296227680304, 3467824696768081952, 2314885530818453536, 2314885530818453536, 140737488344416}}, sa_flags = 60, sa_restorer = 0x7fffffffd660}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007ffff1dacfb4 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7ffff1e9d60b "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175 ap = {{gp_offset = 32, fp_offset = 32767, overflow_arg_area = 0x7fffffffd670, reg_save_area = 0x7fffffffd600}}
        fd = 18
        on_2 = <optimized out>
        list = <optimized out>
        nlist = <optimized out>
        cp = <optimized out>
        written = <optimized out>
#3 0x00007ffff1e300a7 in __GI___fortify_fail (msg=msg@entry=0x7ffff1e9d5f3 "stack smashing detected") at fortify_fail.c:31
No locals.
#4  0x00007ffff1e30070 in __stack_chk_fail () at stack_chk_fail.c:28
No locals.
#5 0x00007ffff6c99569 in simgear::PredicateExpression<int, std::equal_to>::eval (this=0xb6d9e70, value=<optimized out>, b=<optimized out>) at /build/simgear-mmipqT/simgear-3.0.0/simgear/structure/SGExpression.hxx:1184
No locals.
#6 0x00007ffff70b1e72 in getValue (binding=0x7fffffffd730, this=<optimized out>) at /build/simgear-mmipqT/simgear-3.0.0/simgear/structure/SGExpression.hxx:126
        value = true
#7 simgear::AndExpression::eval (this=0xb6da340, value=@0x7fffffffd750: true, b=0x7fffffffd730) at /build/simgear-mmipqT/simgear-3.0.0/simgear/structure/SGExpression.hxx:1266
        i = 0
#8 0x00007ffff70afd03 in getValue (binding=0x7fffffffd730, this=<optimized out>) at /build/simgear-mmipqT/simgear-3.0.0/simgear/structure/SGExpression.hxx:126
        value = true
#9 simgear::Technique::validateInContext (this=0xb6d9bc0, gc=<optimized out>) at /build/simgear-mmipqT/simgear-3.0.0/simgear/scene/material/Technique.cxx:122
        oldVal = simgear::Technique::QUERY_IN_PROGRESS
binding = {<simgear::expression::Binding> = {_vptr.Binding = 0x7ffff742e670 <vtable for simgear::expression::FixedLengthBinding<1>+16>}, _bindings = {{typeTag = simgear::expression::INT, val = {boolVal = false, intVal = 0, floatVal = 0, doubleVal = 0}}}}
        contextId = 0
        newVal = simgear::Technique::INVALID
#10 0x00007ffff51ef556 in osg::GraphicsContext::runOperations() () from /usr/lib/x86_64-linux-gnu/libosg.so.100
No symbol table info available.
#11 0x00007ffff58a2d08 in osgViewer::ViewerBase::renderingTraversals() () from /usr/lib/x86_64-linux-gnu/libosgViewer.so.100
No symbol table info available.
#12 0x0000000000b989ea in fgOSMainLoop() ()
No symbol table info available.
#13 0x00000000005f94ee in fgMainInit(int, char**) ()
No symbol table info available.
#14 0x00000000005a00ff in main ()
No symbol table info available.

It looks like the problem is casting simgear::ConvertExpression<double, float>* (derived from SGExpression<double>*, simgear/structure/SGExpression.hxx:11xx) to SGExpression<int>*:

(gdb) frame 5
#5 0x00007ffff6c99569 in simgear::PredicateExpression<int, std::equal_to>::eval (this=0xb6d9e70, value=<optimized out>, b=<optimized out>) at /build/simgear-mmipqT/simgear-3.0.0/simgear/structure/SGExpression.hxx:1184 1184 /build/simgear-mmipqT/simgear-3.0.0/simgear/structure/SGExpression.hxx: No such file or directory.
(gdb) print *(simgear::PredicateExpression<int, std::equal_to> *) 0xb6d9e70
$2 = {<simgear::GeneralNaryExpression<bool, int>> = {<SGExpression<bool>> = {<simgear::Expression> = {<SGReferenced> = {_refcount = {mValue = 1}}, _vptr.Expression = 0x7ffff6f26150 <vtable for simgear::EqualToExpression<int>+16>}, <No data fields>}, _expressions = std::vector of length 2, capacity 2 = {{_ptr = 0xb6d9de0}, {_ptr = 0xb6d9e10}}}, _pred = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}}
(gdb) print *(SGExpression<bool> *) 0xb6d9de0
$22 = {<simgear::Expression> = {<SGReferenced> = {_refcount = {mValue = 1}}, _vptr.Expression = 0x7ffff6f25e50 <vtable for simgear::ConvertExpression<double, float>+16>}, <No data fields>}

This is fixed by

--- /home/rnpalmer/Debian/sourcepkgs/flightgear-data/Effects/model-combined-transparent.eff 2014-10-21 09:38:48.975690231 +0100 +++ /usr/share/games/flightgear/Effects/model-combined-transparent.eff 2014-10-21 18:06:00.895969579 +0100
@@ -12,7 +12,7 @@ and fallback to plain transparency when
                        <and>
                          <equal>
                                
<float-property>/sim/rendering/shaders/model</float-property>
-                               <value type="int">0</value>
+                               <value type="float">0</value>
                          </equal>
                          <or>
                                <less-equal>

(This change has already been made upstream as part of https://gitorious.org/fg/fgdata/commit/7e7e0ca450bc14575c64f4fbaa4a1f97cdf6b5f8 , though they reported graphical corruption rather than an outright crash)


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to