Bugs item #1689329, was opened at 2007-03-27 18:05
Message generated for change (Comment added) made by dooglus
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=757416&aid=1689329&group_id=144022

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: dooglus (dooglus)
Assigned to: Nobody/Anonymous (nobody)
Summary: studio crashes zooming in to canvas

Initial Comment:
The attached .sif file crashes studio if I open it, maximise the canvas and 
zoom in 4 or 5 times.

If I don't resize the window before zooming, it doesn't crash.

valgrind shows me this, which may well be related:

==589== Thread 2:
==589== Invalid read of size 4
==589==    at 0x82B3EEA: synfig::Color::Color(synfig::Color const&) 
(color.h:258)
==589==    by 0x42E43F8: synfig::_BlendFunc::operator()(synfig::Color const&, 
synfig::Color const&, float const&) const (surface.h:118)
==589==    by 0x42E4490: etl::alpha_pen<etl::generic_pen<synfig::Color, 
synfig::Color>, float, synfig::_BlendFunc>::put_value(synfig::Color const&, 
float) const (_pen.h:356)
==589==    by 0x4304475: etl::alpha_pen<etl::generic_pen<synfig::Color, 
synfig::Color>, float, synfig::_BlendFunc>::put_value_alpha(float) const 
(_pen.h:358)
==589==    by 0x43044A3: etl::alpha_pen<etl::generic_pen<synfig::Color, 
synfig::Color>, float, synfig::_BlendFunc>::put_hline(int, float const&) 
(_pen.h:359)
==589==    by 0x60D2B10: void etl::surface<synfig::Color, synfig::Color, 
synfig::ColorPrep>::fill<synfig::Surface::alpha_pen>(synfig::Color, 
synfig::Surface::alpha_pen&, int, int) (_surface.h:239)
==589==    by 0x60CD5C7: Rectangle::accelerated_render(synfig::Context, 
synfig::Surface*, int, synfig::RendDesc const&, synfig::ProgressCallback*) 
const (rectangle.cpp:447)
==589==    by 0x439E8BA: synfig::Context::accelerated_render(synfig::Surface*, 
int, synfig::RendDesc const&, synfig::ProgressCallback*) const (context.cpp:248)
==589==    by 0x42DDFCC: 
synfig::Layer_PasteCanvas::accelerated_render(synfig::Context, 
synfig::Surface*, int, synfig::RendDesc const&, synfig::ProgressCallback*) 
const (layer_pastecanvas.cpp:367)
==589==    by 0x439E8BA: synfig::Context::accelerated_render(synfig::Surface*, 
int, synfig::RendDesc const&, synfig::ProgressCallback*) const (context.cpp:248)
==589==    by 0x42DD93B: 
synfig::Layer_PasteCanvas::accelerated_render(synfig::Context, 
synfig::Surface*, int, synfig::RendDesc const&, synfig::ProgressCallback*) 
const (layer_pastecanvas.cpp:313)
==589==    by 0x439E8BA: synfig::Context::accelerated_render(synfig::Surface*, 
int, synfig::RendDesc const&, synfig::ProgressCallback*) const (context.cpp:248)
==589==    by 0x430D292: synfig::Target_Tile::render_frame_(synfig::Context, 
synfig::ProgressCallback*) (target_tile.cpp:250)
==589==    by 0x430DD77: synfig::Target_Tile::render(synfig::ProgressCallback*) 
(target_tile.cpp:381)
==589==    by 0x831E65F: studio::AsyncRenderer::render_target() 
(asyncrenderer.cpp:460)
==589==    by 0x8320A74: sigc::bound_mem_functor0<void, 
studio::AsyncRenderer>::operator()() const (mem_fun.h:1787)
==589==    by 0x8320A8B: sigc::adaptor_functor<sigc::bound_mem_functor0<void, 
studio::AsyncRenderer> >::operator()() const (adaptor_trait.h:251)
==589==    by 0x8320AF1: 
sigc::internal::slot_call0<sigc::bound_mem_functor0<void, 
studio::AsyncRenderer>, void>::call_it(sigc::internal::slot_rep*) (slot.h:103)
==589==    by 0x4D1BAE7: (within /usr/lib/libglibmm-2.4.so.1.0.24)
==589==    by 0x50746BE: (within /usr/lib/libglib-2.0.so.0.1200.6)
==589==    by 0x45800BC: start_thread (in /lib/tls/libpthread-2.3.6.so)
==589==    by 0x529E9ED: clone (in /lib/tls/libc-2.3.6.so)
==589==  Address 0x7749FC8 is not stack'd, malloc'd or (recently) free'd



gdb also sometimes shows some weird colour values when it crashes:

(gdb) where
#0  0xb6d20947 in raise () from /lib/tls/libc.so.6
#1  0xb6d220c9 in abort () from /lib/tls/libc.so.6
#2  0xb6d1a05f in __assert_fail () from /lib/tls/libc.so.6
#3  0xb7d3d9bb in blendfunc_STRAIGHT ([EMAIL PROTECTED], [EMAIL PROTECTED], 
amount=0.299951553) at color.cpp:268
#4  0xb7d3dac0 in blendfunc_ALPHA_OVER ([EMAIL PROTECTED], [EMAIL PROTECTED], 
amount=0.299951553) at color.cpp:502
#5  0xb7d3d7a9 in synfig::Color::blend ([EMAIL PROTECTED], [EMAIL PROTECTED], 
amount=0.299951553, type=synfig::Color::BLEND_ALPHA_OVER)
    at color.cpp:579
#6  0xb7c653df in synfig::_BlendFunc::operator() (this=0xb5e9de14, [EMAIL 
PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]) at surface.h:118
#7  0xb7c65441 in etl::alpha_pen<etl::generic_pen<synfig::Color, 
synfig::Color>, float, synfig::_BlendFunc>::put_value (
    this=0xb5e9dde8, [EMAIL PROTECTED], a=1) at 
/usr/local/include/ETL/_pen.h:356
#8  0xb7c85426 in etl::alpha_pen<etl::generic_pen<synfig::Color, 
synfig::Color>, float, synfig::_BlendFunc>::put_value_alpha (
    this=0xb5e9dde8, a=1) at /usr/local/include/ETL/_pen.h:358
#9  0xb7c85454 in etl::alpha_pen<etl::generic_pen<synfig::Color, 
synfig::Color>, float, synfig::_BlendFunc>::put_hline (
    this=0xb5e9dde8, l=26, [EMAIL PROTECTED]) at 
/usr/local/include/ETL/_pen.h:359
#10 0xb6884b11 in etl::surface<synfig::Color, synfig::Color, 
synfig::ColorPrep>::fill<synfig::Surface::alpha_pen> (this=0xb5e9e730, 
    [EMAIL PROTECTED], [EMAIL PROTECTED], w=28, h=1) at 
/usr/local/include/ETL/_surface.h:239
#11 0xb687f5c8 in Rectangle::accelerated_render (this=0x8c955a8, context=
        {<std::_Deque_iterator<etl::handle<synfig::Layer>,const 
etl::handle<synfig::Layer>&,const etl::handle<synfig::Layer>*>> = {_M_cur = 
0x8e16800, _M_first = 0x8e16800, _M_last = 0x8e16a00, _M_node = 0x8d9dbfc}, <No 
data fields>}, surface=0xb5e9e730, quality=10, 
    [EMAIL PROTECTED], cb=0xb5e9e788) at rectangle.cpp:447
#12 0xb7d1f86b in synfig::Context::accelerated_render (this=0xb5e9e90c, 
surface=0xb5e9e730, quality=10, [EMAIL PROTECTED], 
    cb=0xb5e9e788) at context.cpp:248
#13 0xb7c5ef7d in synfig::Layer_PasteCanvas::accelerated_render 
(this=0x8e16c10, context=
        {<std::_Deque_iterator<etl::handle<synfig::Layer>,const 
etl::handle<synfig::Layer>&,const etl::handle<synfig::Layer>*>> = {_M_cur = 
0x8e153f4, _M_first = 0x8e153d0, _M_last = 0x8e155d0, _M_node = 0x8e18dd4}, <No 
data fields>}, surface=0xb5e9f084, quality=10, 
    [EMAIL PROTECTED], cb=0xb5e9ec80) at layer_pastecanvas.cpp:367
#14 0xb7d1f86b in synfig::Context::accelerated_render (this=0xb5e9ee54, 
surface=0xb5e9f084, quality=10, [EMAIL PROTECTED], 
    cb=0xb5e9ec80) at context.cpp:248
#15 0xb7c5e8ec in synfig::Layer_PasteCanvas::accelerated_render 
(this=0x8e16458, context=
        {<std::_Deque_iterator<etl::handle<synfig::Layer>,const 
etl::handle<synfig::Layer>&,const etl::handle<synfig::Layer>*>> = {_M_cur = 
0x8e153e8, _M_first = 0x8e153d0, _M_last = 0x8e155d0, _M_node = 0x8e18dd4}, <No 
data fields>}, surface=0xb5e9f084, quality=10, 
    [EMAIL PROTECTED], cb=0xb5e9f05c) at layer_pastecanvas.cpp:313
#16 0xb7d1f86b in synfig::Context::accelerated_render (this=0xb5e9f1e4, 
surface=0xb5e9f084, quality=10, [EMAIL PROTECTED], 
    cb=0xb5e9f05c) at context.cpp:248
#17 0xb7c8e243 in synfig::Target_Tile::render_frame_ (this=0xb6b5c008, context=
        {<std::_Deque_iterator<etl::handle<synfig::Layer>,const 
etl::handle<synfig::Layer>&,const etl::handle<synfig::Layer>*>> = {_M_cur = 
0x8e16f7c, _M_first = 0x8e16d80, _M_last = 0x8e16f80, _M_node = 0x8e18dd0}, <No 
data fields>}, cb=0x0) at target_tile.cpp:250
#18 0xb7c8ed28 in synfig::Target_Tile::render (this=0xb6b5c008, cb=0x0) at 
target_tile.cpp:381
#19 0x0831e660 in studio::AsyncRenderer::render_target (this=0x8c960b0) at 
asyncrenderer.cpp:460
#20 0x08320a75 in sigc::bound_mem_functor0<void, 
studio::AsyncRenderer>::operator() (this=0x8e10ecc)
    at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
#21 0x08320a8c in sigc::adaptor_functor<sigc::bound_mem_functor0<void, 
studio::AsyncRenderer> >::operator() (this=0x8e10ec8)
    at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#22 0x08320af2 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, 
studio::AsyncRenderer>, void>::call_it (rep=0x8e10eb0)
    at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#23 0xb72e5ae8 in ?? () from /usr/lib/libglibmm-2.4.so.1
#24 0xb6f896bf in ?? () from /usr/lib/libglib-2.0.so.0
#25 0x089f6a00 in ?? ()
#26 0x08c9bdc8 in ?? ()
#27 0xb5e9f468 in ?? ()
#28 0xb7a73ae6 in __nptl_deallocate_tsd () from /lib/tls/libpthread.so.0
#29 0xb7a740bd in start_thread () from /lib/tls/libpthread.so.0
#30 0xb6dc39ee in clone () from /lib/tls/libc.so.6
(gdb) p src
No symbol "src" in current context.
(gdb) up
#1  0xb6d220c9 in abort () from /lib/tls/libc.so.6
(gdb) 
#2  0xb6d1a05f in __assert_fail () from /lib/tls/libc.so.6
(gdb) 
#3  0xb7d3d9bb in blendfunc_STRAIGHT ([EMAIL PROTECTED], [EMAIL PROTECTED], 
amount=0.299951553) at color.cpp:268
268             assert(out.is_valid());
(gdb) p src
$1 = (synfig::Color &) @0xb5e9dafc: {a_ = 0, r_ = -5.30277541e-20, g_ = 
9.63986447e+25, b_ = 1.22342433e+36, static hex_ = {
    static npos = 4294967295, 
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = 
{<No data fields>}, <No data fields>}, 
      _M_p = 0x8da8154 "000000"}}}
(gdb) p bg
$2 = (synfig::Color &) @0xb5e9db5c: {a_ = 3.04313708e+35, r_ = -5.30277541e-20, 
g_ = 9.63986447e+25, b_ = 1.22342433e+36, 
  static hex_ = {static npos = 4294967295, 
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = 
{<No data fields>}, <No data fields>}, 
      _M_p = 0x8da8154 "000000"}}}
(gdb) p amount
$3 = 0.299951553
(gdb) p out
$4 = (synfig::Color &) @0xb5e9dbbc: {a_ = 2.13034348e+35, r_ = -5.30277541e-20, 
g_ = -nan(0x400000), b_ = -nan(0x400000), 
  static hex_ = {static npos = 4294967295, 
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = 
{<No data fields>}, <No data fields>}, 
      _M_p = 0x8da8154 "000000"}}}
(gdb) p src.get_a()
$5 = (const ColorReal &) @0xb5e9dafc: 0
(gdb) p src.get_r()
$6 = (const ColorReal &) @0xb5e9db00: -5.30277541e-20


----------------------------------------------------------------------

>Comment By: dooglus (dooglus)
Date: 2007-03-27 23:47

Message:
Logged In: YES 
user_id=1546005
Originator: YES

Backing out r354 and r356 doesn't fix this crash.  I suspect that whatever
caused r354 to crash is also causing this bug.

----------------------------------------------------------------------

Comment By: dooglus (dooglus)
Date: 2007-03-27 23:26

Message:
Logged In: YES 
user_id=1546005
Originator: YES

svn r354 introduced a crash which r356 worked around.  I didn't understand
why it was crashing, and still don't, but maybe this is related to that?

----------------------------------------------------------------------

Comment By: dooglus (dooglus)
Date: 2007-03-27 21:38

Message:
Logged In: YES 
user_id=1546005
Originator: YES

It also crashes with <param name="blend_method"><integer
value="16"/></param>

                BLEND_SCREEN=16,                //!< \writeme

isn't deprecated.

----------------------------------------------------------------------

Comment By: dooglus (dooglus)
Date: 2007-03-27 21:34

Message:
Logged In: YES 
user_id=1546005
Originator: YES

I didn't have any success trying to debug this, so I tried cutting the
example .sif down to a smaller example that still crashes.

Here it is:

<?xml version="1.0"?>
<canvas>
<layer type="rectangle">
<param name="blend_method"><integer value="19"/></param>
<param name="point1"><vector><x>-1</x><y>-2</y></vector></param>
<param name="point2"><vector><x>2</x><y>1</y></vector></param>
<param name="invert"><bool value="true"/></param>
</layer>
</canvas>

color.h says:
                //! Deprecated
                BLEND_ALPHA_OVER=19,//!< multiply alphas and then straight 
blends that
using the amount

it seems that this crash is dependent on using the deprecated 'alpha over'
blend method.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=757416&aid=1689329&group_id=144022

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to