Hi Same for me, current precise with recommended updates.
Application: Kwin (kwin), signal: Segmentation fault Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [Current thread is 1 (Thread 0x7f8b112f7780 (LWP 25307))] <cut> Thread 1 (Thread 0x7f8b112f7780 (LWP 25307)): [KCrash Handler] #6 __GI___libc_free (mem=0x1) at malloc.c:2968 #7 0x00007f8b0e557819 in XFree (data=<optimized out>) at ../../src/XlibInt.c:1701 #8 0x00007f8b0e0ff2ee in XRRUpdateConfiguration (event=0x7fff66a34f10) at ../../src/Xrandr.c:446 #9 0x00007f8b10e49a30 in KWin::Workspace::workspaceEvent (this=0x1e83d50, e=0x7fff66a34f10) at ../../kwin/events.cpp:460 #10 0x00007f8b10e3b288 in KWin::Application::x11EventFilter (this=0x7fff66a35220, e=0x7fff66a34f10) at ../../kwin/main.cpp:359 #11 0x00007f8b0b728b85 in qt_x11EventFilter (ev=0x7fff66a34f10) at kernel/qapplication_x11.cpp:441 #12 qt_x11EventFilter (ev=0x7fff66a34f10) at kernel/qapplication_x11.cpp:429 #13 0x00007f8b0b737f98 in QApplication::x11ProcessEvent (this=0x7fff66a35220, event=0x7fff66a34f10) at kernel/qapplication_x11.cpp:3444 #14 0x00007f8b0b762b3a in QEventDispatcherX11::processEvents (this=0x1d7cad0, flags=...) at kernel/qeventdispatcher_x11.cpp:132 #15 0x00007f8b0c335c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149 #16 0x00007f8b0c335ed7 in QEventLoop::exec (this=0x7fff66a35160, flags=...) at kernel/qeventloop.cpp:204 #17 0x00007f8b0c33af67 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148 #18 0x00007f8b10e3da06 in kdemain (argc=<optimized out>, argv=<optimized out>) at ../../kwin/main.cpp:541 #19 0x00007f8b10a4176d in __libc_start_main (main=0x400630 <main(int, char**)>, argc=1, ubp_av=0x7fff66a35948, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff66a35938) at libc-start.c:226 #20 0x0000000000400661 in _start ()
Will try some random code changes and see what it does and if I find something.
int XFree (void *data) { Xfree (data); return 1; }
int XRRUpdateConfiguration(XEvent *event) { XRRScreenChangeNotifyEvent *scevent; XConfigureEvent *rcevent; Display *dpy = event->xany.display; XExtDisplayInfo *info; XRandRInfo *xrri; int snum;
/* first, see if it is a vanilla configure notify event */ if (event->type == ConfigureNotify) { rcevent = (XConfigureEvent *) event; snum = XRRRootToScreen(dpy, rcevent->window); if (snum != -1) { dpy->screens[snum].width = rcevent->width; dpy->screens[snum].height = rcevent->height; return 1; } }
info = XRRFindDisplay(dpy); RRCheckExtension (dpy, info, 0);
switch (event->type - info->codes->first_event) { case RRScreenChangeNotify: scevent = (XRRScreenChangeNotifyEvent *) event; snum = XRRRootToScreen(dpy, ((XRRScreenChangeNotifyEvent *) event)->root); if (scevent->rotation & (RR_Rotate_90 | RR_Rotate_270)) { dpy->screens[snum].width = scevent->height; dpy->screens[snum].height = scevent->width; dpy->screens[snum].mwidth = scevent->mheight; dpy->screens[snum].mheight = scevent->mwidth; } else { dpy->screens[snum].width = scevent->width; dpy->screens[snum].height = scevent->height; dpy->screens[snum].mwidth = scevent->mwidth; dpy->screens[snum].mheight = scevent->mheight; } XRenderSetSubpixelOrder (dpy, snum, scevent->subpixel_order); break; default: return 0; } xrri = (XRandRInfo *) info->data; /* * so the next time someone wants some data, it will be fetched; * it might be better to force the round trip immediately, but * I dislike pounding the server simultaneously when not necessary */ if (xrri->config[snum] != NULL) { XFree (xrri->config[snum]); xrri->config[snum] = NULL; } return 1; }
Just trying to understand what it is trying to free. Maybe from the XRRFindDisplay(..
_X_HIDDEN XExtDisplayInfo * XRRFindDisplay (Display *dpy) { XExtDisplayInfo *dpyinfo; XRandRInfo *xrri; int i, numscreens;
dpyinfo = XextFindDisplay (&XRRExtensionInfo, dpy); if (!dpyinfo) { dpyinfo = XextAddDisplay (&XRRExtensionInfo, dpy, XRRExtensionName, &rr_extension_hooks, RRNumberEvents, NULL); numscreens = ScreenCount(dpy); xrri = Xmalloc (sizeof(XRandRInfo) + sizeof(char *) * numscreens); xrri->config = (XRRScreenConfiguration **)(xrri + 1); for(i = 0; i < numscreens; i++) xrri->config[i] = NULL; xrri->major_version = -1; dpyinfo->data = (char *) xrri; } return dpyinfo; }
Hi
Same for me, current precise with recommended updates.
Application: Kwin (kwin), signal: Segmentation fault 64-linux- gnu/libthread_ db.so.1" . XlibInt. c:1701 uration (event= 0x7fff66a34f10) at ../../src/ Xrandr. c:446 ::workspaceEven t (this=0x1e83d50, e=0x7fff66a34f10) at ../../kwin/ events. cpp:460 on::x11EventFil ter (this=0x7fff66a 35220, e=0x7fff66a34f10) at ../../kwin/ main.cpp: 359 qapplication_ x11.cpp: 441 qapplication_ x11.cpp: 429 :x11ProcessEven t (this=0x7fff66a 35220, event=0x7fff66a 34f10) at kernel/ qapplication_ x11.cpp: 3444 rX11::processEv ents (this=0x1d7cad0, flags=...) at kernel/ qeventdispatche r_x11.cpp: 132 :processEvents (this=<optimized out>, flags=...) at kernel/ qeventloop. cpp:149 35160, flags=...) at kernel/ qeventloop. cpp:204 n::exec () at kernel/ qcoreapplicatio n.cpp:1148 main.cpp: 541 0x7fff66a35948, init=<optimized out>, fini=<optimized out>, rtld_fini= <optimized out>, stack_end= 0x7fff66a35938) at libc-start.c:226
Using host libthread_db library "/lib/x86_
[Current thread is 1 (Thread 0x7f8b112f7780 (LWP 25307))]
<cut>
Thread 1 (Thread 0x7f8b112f7780 (LWP 25307)):
[KCrash Handler]
#6 __GI___libc_free (mem=0x1) at malloc.c:2968
#7 0x00007f8b0e557819 in XFree (data=<optimized out>) at ../../src/
#8 0x00007f8b0e0ff2ee in XRRUpdateConfig
#9 0x00007f8b10e49a30 in KWin::Workspace
#10 0x00007f8b10e3b288 in KWin::Applicati
#11 0x00007f8b0b728b85 in qt_x11EventFilter (ev=0x7fff66a34f10) at kernel/
#12 qt_x11EventFilter (ev=0x7fff66a34f10) at kernel/
#13 0x00007f8b0b737f98 in QApplication:
#14 0x00007f8b0b762b3a in QEventDispatche
#15 0x00007f8b0c335c82 in QEventLoop:
#16 0x00007f8b0c335ed7 in QEventLoop::exec (this=0x7fff66a
#17 0x00007f8b0c33af67 in QCoreApplicatio
#18 0x00007f8b10e3da06 in kdemain (argc=<optimized out>, argv=<optimized out>) at ../../kwin/
#19 0x00007f8b10a4176d in __libc_start_main (main=0x400630 <main(int, char**)>, argc=1, ubp_av=
#20 0x0000000000400661 in _start ()
Will try some random code changes and see what it does and if I find something.
int XFree (void *data)
{ Xfree (data);
return 1;
}
int XRRUpdateConfig uration( XEvent *event) NotifyEvent *scevent; xany.display;
{ XRRScreenChange
XConfigureEvent *rcevent;
Display *dpy = event->
XExtDisplayInfo *info;
XRandRInfo *xrri;
int snum;
/* first, see if it is a vanilla configure notify event */ (dpy, rcevent->window);
dpy- >screens[ snum].width = rcevent->width;
dpy- >screens[ snum].height = rcevent->height;
if (event->type == ConfigureNotify) {
rcevent = (XConfigureEvent *) event;
snum = XRRRootToScreen
if (snum != -1) {
return 1;
} }
info = XRRFindDisplay( dpy); nsion (dpy, info, 0);
RRCheckExte
switch (event->type - info->codes- >first_ event) { otify: eNotifyEvent *) event; (dpy,
((XRRScreenC hangeNotifyEven t *) event)->root);
dpy-> screens[ snum].width = scevent->height;
dpy-> screens[ snum].height = scevent->width;
dpy-> screens[ snum].mwidth = scevent->mheight;
dpy-> screens[ snum].mheight = scevent->mwidth;
dpy-> screens[ snum].width = scevent->width;
dpy-> screens[ snum].height = scevent->height;
dpy-> screens[ snum].mwidth = scevent->mwidth;
dpy-> screens[ snum].mheight = scevent->mheight;
XRenderSetSubp ixelOrder (dpy, snum, scevent- >subpixel_ order); config[ snum]);
xrri-> config[ snum] = NULL;
case RRScreenChangeN
scevent = (XRRScreenChang
snum = XRRRootToScreen
if (scevent->rotation & (RR_Rotate_90 | RR_Rotate_270)) {
} else {
}
break;
default:
return 0;
}
xrri = (XRandRInfo *) info->data;
/*
* so the next time someone wants some data, it will be fetched;
* it might be better to force the round trip immediately, but
* I dislike pounding the server simultaneously when not necessary
*/
if (xrri->config[snum] != NULL) {
XFree (xrri->
}
return 1;
}
Just trying to understand what it is trying to free. Maybe from the XRRFindDisplay(..
_X_HIDDEN XExtDisplayInfo *
XRRFindDisplay (Display *dpy)
{
XExtDisplayInfo *dpyinfo;
XRandRInfo *xrri;
int i, numscreens;
dpyinfo = XextFindDisplay (&XRRExtensionInfo, dpy);
XRRExtens ionName,
& rr_extension_ hooks,
RRNumberE vents, NULL);
sizeof( char *) * numscreens);
xrri-> config = (XRRScreenConfi guration **)(xrri + 1);
xrri- >config[ i] = NULL;
xrri-> major_version = -1;
dpyinfo- >data = (char *) xrri;
if (!dpyinfo) {
dpyinfo = XextAddDisplay (&XRRExtensionInfo, dpy,
numscreens = ScreenCount(dpy);
xrri = Xmalloc (sizeof(XRandRInfo) +
for(i = 0; i < numscreens; i++)
}
return dpyinfo;
}