← Back to team overview

ubuntu-x-swat team mailing list archive

[Bug 618236] Re: repeatable xserver crash using gnome-screensaver-preferences

 

I decided to take gdb to it and see what was going on, I've done two
separate backtraces which are getting similar but not identical
backtraces - it looks to me as if dst_private is corrupt somehow and how
far it gets depends how broken it is:


--------------------------------------------------------------
Try 1:

Program received signal SIGSEGV, Segmentation fault.
dixLookupPrivate (pPix=0x2dcb680) at ../../include/privates.h:167
167	../../include/privates.h: No such file or directory.
	in ../../include/privates.h
(gdb) where
#0  dixLookupPrivate (pPix=0x2dcb680) at ../../include/privates.h:167
#1  exaGetPixmapDriverPrivate (pPix=0x2dcb680) at ../../exa/exa.c:70
#2  0x00007fc132db2ff1 in radeon_dri2_copy_region (drawable=0x2c79a30, 
    region=0x7fff2f714390, dest_buffer=<value optimised out>, 
    src_buffer=<value optimised out>) at ../../src/radeon_dri2.c:309
#3  0x00007fc132db3623 in radeon_dri2_frame_event_handler (frame=965179, 
    tv_sec=1281901385, tv_usec=296316, event_data=<value optimised out>)
    at ../../src/radeon_dri2.c:381
#4  0x00007fc1333f3703 in drmHandleEvent () from /lib/libdrm.so.2
#5  0x000000000043168b in WakeupHandler (result=1, pReadmask=0x7e2700)
    at ../../dix/dixutils.c:419
#6  0x000000000045b3b7 in WaitForSomething (
    pClientsReady=<value optimised out>) at ../../os/WaitFor.c:232
#7  0x000000000042c022 in Dispatch () at ../../dix/dispatch.c:368
#8  0x000000000042184b in main (argc=9, argv=0x7fff2f714cb8, 
    envp=<value optimised out>) at ../../dix/main.c:291

(gdb) up
#2  0x00007fc132db2ff1 in radeon_dri2_copy_region (drawable=0x2c79a30, 
    region=0x7fff2f714390, dest_buffer=<value optimised out>, 
    src_buffer=<value optimised out>) at ../../src/radeon_dri2.c:309
309	../../src/radeon_dri2.c: No such file or directory.
	in ../../src/radeon_dri2.c
(gdb) p dst_private
$1 = (struct dri2_buffer_priv *) 0x2dd1090
(gdb) p *dst_private
$2 = {pixmap = 0x2dcb680, attachment = 0}
(gdb) p *dst_private->pixmap
$3 = {drawable = {type = 32 ' ', class = 0 '\000', depth = 0 '\000', 
    bitsPerPixel = 0 '\000', id = 0, x = 33, y = 0, width = 0, height = 0, 
    pScreen = 0x2c8dfd0, serialNumber = 9}, devPrivates = 0x0, refcnt = 33, 
  devKind = 0, devPrivate = {ptr = 0xc000c00000000, val = 3377751260135424, 
    uval = 3377751260135424, fptr = 0xc000c00000000}, screen_x = 0, 
  screen_y = 0, usage_hint = 0}
(gdb) p /x *dst_private->pixmap
$4 = {drawable = {type = 0x20, class = 0x0, depth = 0x0, bitsPerPixel = 0x0, 
    id = 0x0, x = 0x21, y = 0x0, width = 0x0, height = 0x0, 
    pScreen = 0x2c8dfd0, serialNumber = 0x9}, devPrivates = 0x0, 
  refcnt = 0x21, devKind = 0x0, devPrivate = {ptr = 0xc000c00000000, 
    val = 0xc000c00000000, uval = 0xc000c00000000, fptr = 0xc000c00000000}, 
  screen_x = 0x0, screen_y = 0x0, usage_hint = 0x0}
(gdb) 
(gdb) p *region
$7 = {extents = {x1 = 0, y1 = 0, x2 = 480, y2 = 303}, data = 0x0}
(gdb) p *drawable
$9 = {type = 0 '\000', class = 1 '\001', depth = 24 '\030', 
  bitsPerPixel = 32 ' ', id = 71303212, x = 807, y = 373, width = 480, 
  height = 303, pScreen = 0x2740be0, serialNumber = 12418050}
(gdb) p *drawable->pScreen
$10 = {myNum = 0, id = 0, x = 0, y = 0, width = 1920, height = 1080, 
  mmWidth = 508, mmHeight = 285, numDepths = 7, rootDepth = 24 '\030', 
  allowedDepths = 0x27354f0, rootVisual = 33, defColormap = 32, 
  minInstalledCmaps = 1, maxInstalledCmaps = 1, 
  backingStoreSupport = 0 '\000', saveUnderSupport = 0 '\000', 
  whitePixel = 16777215, blackPixel = 0, GCperDepth = {0x277ee60, 0x277ef50, 
    0x277f040, 0x277f130, 0x277f220, 0x277f310, 0x277f400, 0x277f4f0, 0x0}, 
  PixmapPerDepth = {0x277f5e0}, devPrivate = 0x277c6d0, numVisuals = 64, 
  visuals = 0x277d760, root = 0x27817b0, screensaver = {pWindow = 0x0, 
    wid = 256, blanked = 0 '\000', ExternalScreenSaver = 0}, 
  CloseScreen = 0x7fc133a42af0 <glxCloseScreen>, 
  QueryBestSize = 0x53eb60 <xf86CursorQueryBestSize>, 
  SaveScreen = 0x7fc132db44e0 <RADEONSaveScreen_KMS>, 
  GetImage = 0x55bd50 <miSpriteGetImage>, 
  GetSpans = 0x55baf0 <miSpriteGetSpans>, 
  SourceValidate = 0x55b8a0 <miSpriteSourceValidate>, 
  CreateWindow = 0x4a5350 <compCreateWindow>, 
  DestroyWindow = 0x4a4190 <compDestroyWindow>, 
  PositionWindow = 0x4a4500 <compPositionWindow>, 
  ChangeWindowAttributes = 0x4a3330 <compChangeWindowAttributes>, 
  RealizeWindow = 0x4a4910 <compRealizeWindow>, 
  UnrealizeWindow = 0x4a4840 <compUnrealizeWindow>, 
  ValidateTree = 0x517ba0 <miValidateTree>, PostValidateTree = 0, 
---Type <return> to continue, or q <return> to quit---
  WindowExposures = 0x533230 <xf86XVWindowExposures>, 
  CopyWindow = 0x4a5510 <compCopyWindow>, 
  ClearToBackground = 0x563ca0 <miClearToBackground>, 
  ClipNotify = 0x4a4000 <compClipNotify>, RestackWindow = 0, 
  CreatePixmap = 0x7fc1320908f0 <exaCreatePixmap_mixed>, 
  DestroyPixmap = 0x7fc133e83260 <XvDestroyPixmap>, SaveDoomedAreas = 0, 
  RestoreAreas = 0, ExposeCopy = 0, TranslateBackingStore = 0, 
  ClearBackingStore = 0, DrawGuarantee = 0, BackingStoreFuncs = {
    SaveAreas = 0, RestoreAreas = 0, SetClipmaskRgn = 0, GetImagePixmap = 0, 
    GetSpansPixmap = 0}, RealizeFont = 0x7fc1322ba690 <fbRealizeFont>, 
  UnrealizeFont = 0x7fc1322ba6a0 <fbUnrealizeFont>, 
  ConstrainCursor = 0x4598a0 <miPointerConstrainCursor>, 
  CursorLimits = 0x56a840 <AnimCurCursorLimits>, 
  DisplayCursor = 0x56a180 <AnimCurDisplayCursor>, 
  RealizeCursor = 0x56a360 <AnimCurRealizeCursor>, 
  UnrealizeCursor = 0x56a5b0 <AnimCurUnrealizeCursor>, 
  RecolorCursor = 0x56a420 <AnimCurRecolorCursor>, 
  SetCursorPosition = 0x569a70 <AnimCurSetCursorPosition>, 
  CreateGC = 0x4d6ed0 <damageCreateGC>, 
  CreateColormap = 0x7fc1322a5b00 <fbInitializeColormap>, 
  DestroyColormap = 0x528ec0 <DGADestroyColormap>, 
  InstallColormap = 0x4a3830 <compInstallColormap>, 
  UninstallColormap = 0x528d70 <DGAUninstallColormap>, 
---Type <return> to continue, or q <return> to quit---
  ListInstalledColormaps = 0x7fc1322a5b40 <fbListInstalledColormaps>, 
  StoreColors = 0x55c590 <miSpriteStoreColors>, 
  ResolveColor = 0x7fc1322a5b10 <fbResolveColor>, 
  BitmapToRegion = 0x7fc13208d9e0 <exaBitmapToRegion>, 
  SendGraphicsExpose = 0x458920 <miSendGraphicsExpose>, 
  BlockHandler = 0x4a3470 <compBlockHandler>, 
  WakeupHandler = 0x4314f0 <NoopDDA>, blockData = 0x0, wakeupData = 0x0, 
  devPrivates = 0x2771250, 
  CreateScreenResources = 0x7fc132db43b0 <RADEONCreateScreenResources_KMS>, 
  ModifyPixmapHeader = 0x7fc132090cb0 <exaModifyPixmapHeader_mixed>, 
  GetWindowPixmap = 0x7fc1322ba9b0 <_fbGetWindowPixmap>, 
  SetWindowPixmap = 0x4d71d0 <damageSetWindowPixmap>, 
  GetScreenPixmap = 0x559840 <miGetScreenPixmap>, 
  SetScreenPixmap = 0x559850 <miSetScreenPixmap>, pScratchPixmap = 0x2a77590, 
  totalPixmapSize = 200, MarkWindow = 0x563b70 <miMarkWindow>, 
  MarkOverlappedWindows = 0x563990 <miMarkOverlappedWindows>, 
  ChangeSaveUnder = 0, PostChangeSaveUnder = 0, 
  ConfigNotify = 0x4a4310 <compConfigNotify>, 
  MoveWindow = 0x4a5290 <compMoveWindow>, 
  ResizeWindow = 0x4a51d0 <compResizeWindow>, 
  GetLayerWindow = 0x5627e0 <miGetLayerWindow>, 
  HandleExposures = 0x563bb0 <miHandleValidateExposures>, 
  ReparentWindow = 0x4a4c50 <compReparentWindow>, 
---Type <return> to continue, or q <return> to quit---
  SetShape = 0x562a90 <miSetShape>, 
  ChangeBorderWidth = 0x4a5110 <compChangeBorderWidth>, 
  MarkUnrealizedWindow = 0x563dd0 <miMarkUnrealizedWindow>, 
  DeviceCursorInitialize = 0x459640 <miPointerDeviceInitialize>, 
  DeviceCursorCleanup = 0x45a250 <miPointerDeviceCleanup>}

(gdb) up
#3  0x00007fc132db3623 in radeon_dri2_frame_event_handler (frame=965179, 
    tv_sec=1281901385, tv_usec=296316, event_data=<value optimised out>)
    at ../../src/radeon_dri2.c:381
381	in ../../src/radeon_dri2.c

(gdb) p /x *event
$12 = {drawable_id = 0x440002c, client = 0x2c70d30, type = 0x0, 
  frame = 0xeba3b, event_complete = 0x7fc1331ea8e0, event_data = 0x2c79a30, 
  front = 0x2c42a40, back = 0x2c652a0}
--------------------------------------------------------------
Try 2:

Program received signal SIGSEGV, Segmentation fault.
radeon_dri2_copy_region (drawable=0x279ebf0, region=0x7ffff300eba0, 
    dest_buffer=<value optimised out>, src_buffer=<value optimised out>)
    at ../../src/radeon_dri2.c:287
287	../../src/radeon_dri2.c: No such file or directory.
	in ../../src/radeon_dri2.c
(gdb) where
#0  radeon_dri2_copy_region (drawable=0x279ebf0, region=0x7ffff300eba0, 
    dest_buffer=<value optimised out>, src_buffer=<value optimised out>)
    at ../../src/radeon_dri2.c:287
#1  0x00007f71a3718623 in radeon_dri2_frame_event_handler (frame=1078245, 
    tv_sec=1281903269, tv_usec=765417, event_data=<value optimised out>)
    at ../../src/radeon_dri2.c:381
#2  0x00007f71a3d58703 in drmHandleEvent () from /lib/libdrm.so.2
#3  0x000000000043168b in WakeupHandler (result=1, pReadmask=0x7e2700)
    at ../../dix/dixutils.c:419
#4  0x000000000045b3b7 in WaitForSomething (
    pClientsReady=<value optimised out>) at ../../os/WaitFor.c:232
#5  0x000000000042c022 in Dispatch () at ../../dix/dispatch.c:368
#6  0x000000000042184b in main (argc=8, argv=0x7ffff300f4c8, 
    envp=<value optimised out>) at ../../dix/main.c:291

(gdb) p dst_private
$1 = (struct dri2_buffer_priv *) 0x15006a00140000
(gdb) p *dst_private
Cannot access memory at address 0x15006a00140000

-- 
repeatable xserver crash using gnome-screensaver-preferences
https://bugs.launchpad.net/bugs/618236
You received this bug notification because you are a member of Ubuntu-X,
which is subscribed to xserver-xorg-video-ati in ubuntu.



References