Place plugin crashes when lots of windows are opened (PlaceWindow::cascadeFindFirstFit)

Bug #1014944 reported by Daniel van Vugt
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Compiz
Triaged
Critical
Unassigned

Bug Description

Steps to reproduce (with the latest lp:compiz):

1. Open a nautilus window.
2. Use Ctrl+N to keep opening more windows.

Expected: Windows keep opening.
Observed: After a dozen or two windows are opened, compiz crashes in the place plugin:

(gdb) bt
#0 geometry (this=0x91) at /home/dan/bzr/compiz/trunk/plugins/place/src/smart/include/smart.h:47
#1 compareTopmost (a=0x18626c8, b=0x91) at /home/dan/bzr/compiz/trunk/plugins/place/src/place.cpp:263
#2 0x00007fbca4a0c273 in __unguarded_partition<__gnu_cxx::__normal_iterator<compiz::place::Placeable**, std::vector<compiz::place::Placeable*> >, compiz::place::Placeable*, bool (*)(compiz::place::Placeable*, compiz::place::Placeable*)> (
    __pivot=@0x1a99e00: 0x18626c8, __comp=0x7fbca4a06060 <compareTopmost(compiz::place::Placeable*, compiz::place::Placeable*)>, __last=..., __first=...) at /usr/include/c++/4.6/bits/stl_algo.h:2236
#3 __unguarded_partition_pivot<__gnu_cxx::__normal_iterator<compiz::place::Placeable**, std::vector<compiz::place::Placeable*> >, bool (*)(compiz::place::Placeable*, compiz::place::Placeable*)> (
    __comp=0x7fbca4a06060 <compareTopmost(compiz::place::Placeable*, compiz::place::Placeable*)>, __last=..., __first=...) at /usr/include/c++/4.6/bits/stl_algo.h:2265
#4 std::__introsort_loop<__gnu_cxx::__normal_iterator<compiz::place::Placeable**, std::vector<compiz::place::Placeable*, std::allocator<compiz::place::Placeable*> > >, long, bool (*)(compiz::place::Placeable*, compiz::place::Placeable*)>
    (__first=..., __last=..., __depth_limit=7, __comp=0x7fbca4a06060 <compareTopmost(compiz::place::Placeable*, compiz::place::Placeable*)>) at /usr/include/c++/4.6/bits/stl_algo.h:2306
#5 0x00007fbca4a08fe9 in sort<__gnu_cxx::__normal_iterator<compiz::place::Placeable**, std::vector<compiz::place::Placeable*> >, bool (*)(compiz::place::Placeable*, compiz::place::Placeable*)> (
    __comp=0x7fbca4a06060 <compareTopmost(compiz::place::Placeable*, compiz::place::Placeable*)>, __last=..., __first=...) at /usr/include/c++/4.6/bits/stl_algo.h:5445
#6 PlaceWindow::cascadeFindFirstFit (this=0x1882530, placeables=..., workArea=..., pos=...) at /home/dan/bzr/compiz/trunk/plugins/place/src/place.cpp:833
#7 0x00007fbca4a0989a in PlaceWindow::placeCascade (this=0x1882530, workArea=..., pos=...) at /home/dan/bzr/compiz/trunk/plugins/place/src/place.cpp:705
#8 0x00007fbca4a09e08 in PlaceWindow::doPlacement (this=0x1882530, pos=...) at /home/dan/bzr/compiz/trunk/plugins/place/src/place.cpp:618
#9 0x00007fbca4a0a171 in PlaceWindow::place (this=0x1882530, pos=...) at /home/dan/bzr/compiz/trunk/plugins/place/src/place.cpp:311
#10 0x00007fbcb385187c in CompWindow::place (this=0x1873eb0, pos=...) at /home/dan/bzr/compiz/trunk/src/window.cpp:2217
#11 0x00007fbcb385ec60 in PrivateWindow::processMap (this=0x1ac92f0) at /home/dan/bzr/compiz/trunk/src/window.cpp:5494
#12 0x00007fbcb3872cc4 in CompScreenImpl::_handleEvent (this=0x132fd10, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/src/event.cpp:1834
#13 0x00007fbcaea32788 in PrivateCompositeScreen::handleEvent (this=0x13a8e40, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/composite/src/screen.cpp:106
#14 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#15 0x00007fbcae40264f in PrivateGLScreen::handleEvent (this=0x13ba820, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/opengl/src/screen.cpp:616
#16 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#17 0x00007fbcac440f7c in MoveScreen::handleEvent (this=<optimised out>, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/move/src/move.cpp:632
#18 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#19 0x00007fbcac21b269 in ResizeScreen::handleEvent (this=0x161e540, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/resize/src/resize.cpp:1495
#20 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#21 0x00007fbca5dfc5dc in DecorScreen::handleEvent (this=0x163bff0, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/decor/src/decor.cpp:2400
#22 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#23 0x00007fbca57a44c7 in PrivateScaleScreen::handleEvent (this=0x1685090, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/scale/src/scale.cpp:1664
#24 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#25 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#26 0x00007fbca4a08905 in PlaceScreen::handleEvent (this=0x16d3fd0, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/plugins/place/src/place.cpp:209
#27 0x00007fbcb386f503 in CompScreen::handleEvent (this=0x132fd10, event=<optimised out>) at /home/dan/bzr/compiz/trunk/src/event.cpp:1049
#28 0x00007fbcb386f53b in CompScreenImpl::alwaysHandleEvent (this=0x132fd10, event=0x7fff6e9d9cb0) at /home/dan/bzr/compiz/trunk/src/event.cpp:1065
#29 0x00007fbcb3849352 in PrivateScreen::processEvents (this=0x1334058) at /home/dan/bzr/compiz/trunk/src/screen.cpp:876
#30 0x00007fbcb387aee7 in CompEventSource::callback (this=<optimised out>) at /home/dan/bzr/compiz/trunk/src/eventsource.cpp:64
#31 0x00007fbcb1d7cf2f in Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
#32 0x00007fbcb1884d53 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007fbcb18850a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007fbcb188549a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x0000000000402194 in main (argc=16, argv=0x7fff6e9d9ff8) at /home/dan/bzr/compiz/trunk/src/main.cpp:224
(gdb)

Revision history for this message
Daniel van Vugt (vanvugt) wrote :
affects: unity (Ubuntu) → compiz
Changed in compiz:
milestone: none → 0.9.8.0
Changed in compiz:
milestone: 0.9.8.0 → 0.9.8.1
Changed in compiz:
milestone: 0.9.8.2 → 0.9.8.4
Changed in compiz:
milestone: 0.9.8.4 → 0.9.9.0
Changed in compiz:
milestone: 0.9.9.0 → 0.9.9.2
Changed in compiz:
milestone: 0.9.9.2 → 0.9.10.0
Changed in compiz:
milestone: 0.9.10.0 → 0.9.10.2
MC Return (mc-return)
Changed in compiz:
milestone: 0.9.10.2 → 0.9.11.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.