Version: 0.95 (using KDE KDE 3.1) Installed from: FreeBSD Ports Compiler: gcc version 3.2.1 [FreeBSD] 20021119 (release) OS: FreeBSD It looks like the *this that's being passed to NETWinInfo::windowType() is being clobbered/set to a bogus value inside of KWinInternal::Client::windowType(). I don't know what exactly it was that I did that triggered this though: I wasn't paying that close of attention when this happened. :-/ #0 0x286643e6 in NETWinInfo::windowType() const (this=0xd0d0d0d0) at netwm.cpp:2816 #1 0x2935fa3b in KWinInternal::Client::windowType() const (this=0x8126200) at client.cpp:3037 #2 0x2935fcaf in KWinInternal::Client::isTopMenu() const (this=0xd0d0d0d0) at client.cpp:3087 #3 0x2933efce in KWinInternal::Workspace::setActiveClient(KWinInternal::Client*) (this=0x80c7800, c=0x0) at qvaluelist.h:186 #4 0x293582cc in ~Client (this=0x8107200) at client.h:382 #5 0x293cbe4b in ~KeramikClient (this=0x8107200) at keramik.cpp:781 #6 0x2933b2eb in ~Workspace (this=0x80c7800) at qvaluelist.h:186 #7 0x29353094 in virtual thunk to KWinInternal::Workspace::~Workspace() () at workspace.h:116 #8 0x2936293e in ~Application (this=0xbfbff610) at workspace.h:122 #9 0x2936308b in kdemain (argc=1, argv=0x80798f0) at main.cpp:256 #10 0x0804cb16 in launch (argc=1, _name=0x807c064 "kwin", args=0x807c069 "", cwd=0x0, envc=0, envs=0x807c06d "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0xd0d0d0d0 <Address 0xd0d0d0d0 out of bounds>) at kinit.cpp:547 #11 0x0804d906 in handle_launcher_request (sock=9) at kinit.cpp:1021 #12 0x0804de57 in handle_requests (waitForPid=0) at kinit.cpp:1189 #13 0x0804ef43 in main (argc=3, argv=0xbfbffc2c, envp=0xd0d0d0d0) at kinit.cpp:1540 #14 0x0804b115 in _start ()
It looks like this is the "this really shouldn't happen" mentioned in the Client destructor. Because the Workspace is already being destructed the Workspace::setActiveClient call fails. The problem can be fixed by calling setActiveClient( NULL ) at the start of the Workspace destructor. Another possibility might be to use Workspace::destroyClient instead of using the Client destructor directly.
Thanks, fixed.