compiz crashes with SIGSEGV in startup: ./bin/compiz (core) - Fatal: Private index value "15CompositeScreen_index_5" already stored in screen.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Compiz |
Fix Released
|
High
|
Daniel van Vugt | ||
0.9.8 |
Fix Released
|
High
|
Daniel van Vugt | ||
Compiz Core |
Triaged
|
Undecided
|
Unassigned | ||
compiz (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Quantal |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
A crasher that may explain a class of compiz crashes regarding disabling and enabling plugins.
[Test case]
Compile compiz with clang and try to start it.
[Regression potential]
Low, adds only template lines and no real code.
---original description below---
Compiled compiz with clang (env CC=clang CXX=clang++) and it crashes on startup:
./bin/compiz (core) - Info: Loading plugin: core
./bin/compiz (core) - Info: Starting plugin: core
./bin/compiz (core) - Info: Loading plugin: composite
./bin/compiz (core) - Info: Starting plugin: composite
./bin/compiz (core) - Info: Loading plugin: opengl
./bin/compiz (core) - Info: Starting plugin: opengl
./bin/compiz (core) - Fatal: Private index value "15CompositeScr
Segmentation fault (core dumped)
Core was generated by `./bin/compiz --replace composite opengl move resize decor'.
Program terminated with signal 11, Segmentation fault.
#0 CompositeScreen
at /home/dan/
627 return priv->output;
(gdb) bt
#0 CompositeScreen
at /home/dan/
#1 0x00007f5b0fde5441 in PrivateGLScreen
this=<optimised out>, gs=<optimised out>)
at /home/dan/
#2 0x00007f5b0fde453c in GLScreen::GLScreen (this=<optimised out>,
s=<optimised out>)
at /home/dan/
#3 0x00007f5b0fdd3f56 in PluginClassHand
base=<error reading variable: Unhandled dwarf expression opcode 0x0>)
at /home/dan/
#4 0x00007f5b0fde175c in CompPlugin:
from /home/dan/
#5 0x00007f5b192ddd75 in CompManager:
at /home/dan/
#6 0x00007f5b192de7cf in CompPlugin::push (p=<optimised out>)
at /home/dan/
#7 0x00007f5b192a82e0 in compiz:
(this=<error reading variable: Unhandled dwarf expression opcode 0x0>,
screen=
at /home/dan/
#8 0x00007f5b192b2f59 in initPlugins (this=<optimised out>,
this=<optimised out>) at /home/dan/
#9 CompScreenImpl:
at /home/dan/
#10 0x0000000000404425 in CompManager::init (this=0x7fffd8b
at /home/dan/
#11 0x00000000004046f2 in main (argc=<optimised out>, argv=<optimised out>)
at /home/dan/
(gdb)
Related branches
- Sam Spilsbury: Approve
- jenkins (community): Approve (continuous-integration)
-
Diff: 293 lines (+54/-0)18 files modifiedplugins/animation/include/animation/screen.h (+4/-0)
plugins/animation/include/animation/window.h (+3/-0)
plugins/animation/src/animation.cpp (+4/-0)
plugins/composite/include/composite/composite.h (+4/-0)
plugins/composite/src/screen.cpp (+2/-0)
plugins/composite/src/window.cpp (+2/-0)
plugins/cube/include/cube/cube.h (+2/-0)
plugins/cube/src/cube.cpp (+4/-0)
plugins/cube/src/privates.h (+3/-0)
plugins/mousepoll/src/mousepoll.cpp (+2/-0)
plugins/mousepoll/src/private.h (+3/-0)
plugins/opengl/include/opengl/opengl.h (+3/-0)
plugins/opengl/src/screen.cpp (+2/-0)
plugins/opengl/src/window.cpp (+3/-0)
plugins/scale/include/scale/scale.h (+4/-0)
plugins/scale/src/scale.cpp (+4/-0)
plugins/text/src/private.h (+3/-0)
plugins/text/src/text.cpp (+2/-0)
Changed in compiz: | |
milestone: | none → 0.9.9.0 |
Changed in compiz: | |
importance: | Undecided → High |
Changed in compiz: | |
status: | In Progress → Fix Committed |
description: | updated |
Changed in compiz (Ubuntu): | |
status: | New → Confirmed |
description: | updated |
Changed in compiz (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in compiz (Ubuntu Quantal): | |
status: | New → In Progress |
Changed in compiz-core: | |
status: | New → Triaged |
milestone: | none → 0.9.7.12 |
tags: |
added: verification-done removed: verification-needed |
Changed in compiz-core: | |
milestone: | 0.9.7.12 → 0.9.7.14 |
Changed in compiz: | |
status: | Fix Committed → Fix Released |
And valgrind says
==27820== Invalid read of size 8 ::output( ) (screen.cpp:627) ::PrivateGLScre en(GLScreen* ) (screen.cpp:1139) :GLScreen( CompScreen* ) (screen.cpp:829) ler<GLScreen, CompScreen, 6>::get( CompScreen* ) (pluginclasshan dler.h: 225) :VTableForScree nAndWindow< GLScreen, GLWindow> ::initScreen( CompScreen* ) (plugin.h:229) :initPlugin( CompPlugin* ) (plugin.cpp:233) :push(CompPlugi n*) (plugin.cpp:449) :private_ screen: :PluginManager: :updatePlugins( CompScreen* , std::vector< CompOption: :Value, std::allocator< CompOption: :Value> > const&) (screen.cpp:1117) :init(char const*) (screen.cpp:4777) ::output( ) (screen.cpp:627) ::PrivateGLScre en(GLScreen* ) (screen.cpp:1139) :GLScreen( CompScreen* ) (screen.cpp:829) ler<GLScreen, CompScreen, 6>::get( CompScreen* ) (pluginclasshan dler.h: 225) :VTableForScree nAndWindow< GLScreen, GLWindow> ::initScreen( CompScreen* ) (plugin.h:229) :initPlugin( CompPlugin* ) (plugin.cpp:233) :push(CompPlugi n*) (plugin.cpp:449) :private_ screen: :PluginManager: :updatePlugins( CompScreen* , std::vector< CompOption: :Value, std::allocator< CompOption: :Value> > const&) (screen.cpp:1117) :init(char const*) (screen.cpp:4777)
==27820== at 0xA0D69B0: CompositeScreen
==27820== by 0xA721430: PrivateGLScreen
==27820== by 0xA72052B: GLScreen:
==27820== by 0xA70FF45: PluginClassHand
==27820== by 0xA71D74B: CompPlugin:
==27820== by 0x4EB6D74: CompManager:
==27820== by 0x4EB77CE: CompPlugin:
==27820== by 0x4E812DF: compiz:
==27820== by 0x4E8BF58: CompScreenImpl:
==27820== by 0x404424: CompManager::init() (main.cpp:168)
==27820== by 0x4046F1: main (main.cpp:257)
==27820== Address 0x60 is not stack'd, malloc'd or (recently) free'd
==27820==
==27820==
==27820== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==27820== Access not within mapped region at address 0x60
==27820== at 0xA0D69B0: CompositeScreen
==27820== by 0xA721430: PrivateGLScreen
==27820== by 0xA72052B: GLScreen:
==27820== by 0xA70FF45: PluginClassHand
==27820== by 0xA71D74B: CompPlugin:
==27820== by 0x4EB6D74: CompManager:
==27820== by 0x4EB77CE: CompPlugin:
==27820== by 0x4E812DF: compiz:
==27820== by 0x4E8BF58: CompScreenImpl:
==27820== by 0x404424: CompManager::init() (main.cpp:168)
==27820== by 0x4046F1: main (main.cpp:257)