1. 22 Jun, 2019 17 commits
  2. 18 Jun, 2019 18 commits
    • Ulrich Sibiller's avatar
      Font.c: code simplifications · 8205db42
      Ulrich Sibiller authored
      8205db42
    • Ulrich Sibiller's avatar
      various scope improvements · cb508b26
      Ulrich Sibiller authored
      cb508b26
    • Ulrich Sibiller's avatar
      glxext.c: fix another memory leak · bffdacc4
      Ulrich Sibiller authored
      ==10226== 3,337 bytes in 1 blocks are definitely lost in loss record 295 of 307
      ==10226==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==10226==    by 0x6281DB9: strdup (strdup.c:42)
      ==10226==    by 0x2ABA9E: __glXClientInfo (glxcmds.c:2170)
      ==10226==    by 0x17CA3E: __glXDispatch (NXglxext.c:128)
      ==10226==    by 0x16EE77: Dispatch (NXdispatch.c:476)
      ==10226==    by 0x14DCE0: main (main.c:353)
      
      There's no point in trying to free cl->* after memset(0).
      
      This one is a bug that is found identically in xorg upstream and has
      only been fixed during rework of the whole client resource freeing
      stuff. So we fix it in glxext.c.
      bffdacc4
    • Ulrich Sibiller's avatar
      Screen.c: more debug output · b5eb7c76
      Ulrich Sibiller authored
      b5eb7c76
    • Ulrich Sibiller's avatar
      Extension.c: code simplifications · 7e12c9ba
      Ulrich Sibiller authored
      7e12c9ba
    • Ulrich Sibiller's avatar
    • Ulrich Sibiller's avatar
      mi/miinitext.c: fix memleaks: remove (double) glx initialization · 5cb49714
      Ulrich Sibiller authored
      Fix these memory leaks:
      
      ==30021== 128 bytes in 1 blocks are definitely lost in loss record 230 of 302
      ==30021==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==30021==    by 0x2EF89C: init_visuals (xf86glx.c:390)
      ==30021==    by 0x2EF89C: __MESA_initVisuals (xf86glx.c:541)
      ==30021==    by 0x17C922: GlxInitVisuals (glxext.c:317)
      ==30021==    by 0x218E73: fbInitVisuals (fbcmap.c:668)
      ==30021==    by 0x20BEB1: fbFinishScreenInit (fbscreen.c:229)
      ==30021==    by 0x20C275: fbScreenInit (fbscreen.c:273)
      ==30021==    by 0x1E0317: nxagentOpenScreen (Screen.c:1357)
      ==30021==    by 0x16D848: AddScreen (dispatch.c:4171)
      ==30021==    by 0x1DB7FF: InitOutput (Init.c:396)
      ==30021==    by 0x14DB12: main (main.c:279)
      ==30021==
      ==30021== 3,072 (192 direct, 2,880 indirect) bytes in 1 blocks are definitely lost in loss record 290 of 302
      ==30021==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==30021==    by 0x2CCCC7: _gl_context_modes_create (glcontextmodes.c:364)
      ==30021==    by 0x2EF87C: init_visuals (xf86glx.c:381)
      ==30021==    by 0x2EF87C: __MESA_initVisuals (xf86glx.c:541)
      ==30021==    by 0x17C922: GlxInitVisuals (glxext.c:317)
      ==30021==    by 0x218E73: fbInitVisuals (fbcmap.c:668)
      ==30021==    by 0x20BEB1: fbFinishScreenInit (fbscreen.c:229)
      ==30021==    by 0x20C275: fbScreenInit (fbscreen.c:273)
      ==30021==    by 0x1E0317: nxagentOpenScreen (Screen.c:1357)
      ==30021==    by 0x16D848: AddScreen (dispatch.c:4171)
      ==30021==    by 0x1DB7FF: InitOutput (Init.c:396)
      ==30021==    by 0x14DB12: main (main.c:279)
      
      The problem here is that GlxInitVisuals is called twice. First via
      fbScreenInit and then again via nxagentInitGlxExtension. We remove the
      first one to ensure the code in nxagenOpenScreen works as initially
      intended.
      
      There's an xorg upstream patch that does the same
      (7d74690536b64f7b8e8036507ab7790807349c50), but it also cleans up
      other stuff we do not even have in out source (yet?).
      5cb49714
    • Ulrich Sibiller's avatar
      Screen.c: fix another memory leak · 75644222
      Ulrich Sibiller authored
      ==12280== 0 bytes in 5 blocks are definitely lost in loss record 1 of 304
      ==12280==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==12280==    by 0x2EFC29: init_visuals (xf86glx.c:489)
      ==12280==    by 0x2EFC29: __MESA_initVisuals (xf86glx.c:540)
      ==12280==    by 0x17C902: GlxInitVisuals (glxext.c:317)
      ==12280==    by 0x218C03: fbInitVisuals (fbcmap.c:668)
      ==12280==    by 0x20BC41: fbFinishScreenInit (fbscreen.c:229)
      ==12280==    by 0x20C005: fbScreenInit (fbscreen.c:273)
      ==12280==    by 0x1E024C: nxagentOpenScreen (Screen.c:1356)
      ==12280==    by 0x16D828: AddScreen (dispatch.c:4171)
      ==12280==    by 0x1DB7DF: InitOutput (Init.c:396)
      ==12280==    by 0x14DB12: main (main.c:279)
      ==12280==
      ==12280== 64 bytes in 2 blocks are definitely lost in loss record 223 of 304
      ==12280==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==12280==    by 0x2EFA05: init_visuals (xf86glx.c:489)
      ==12280==    by 0x2EFA05: __MESA_initVisuals (xf86glx.c:540)
      ==12280==    by 0x17C902: GlxInitVisuals (glxext.c:317)
      ==12280==    by 0x218C03: fbInitVisuals (fbcmap.c:668)
      ==12280==    by 0x20BC41: fbFinishScreenInit (fbscreen.c:229)
      ==12280==    by 0x20C005: fbScreenInit (fbscreen.c:273)
      ==12280==    by 0x1E024C: nxagentOpenScreen (Screen.c:1356)
      ==12280==    by 0x16D828: AddScreen (dispatch.c:4171)
      ==12280==    by 0x1DB7DF: InitOutput (Init.c:396)
      ==12280==    by 0x14DB12: main (main.c:279)
      75644222
    • Ulrich Sibiller's avatar
      Fix memleaks: Free devPrivates of devices on shutdown · 4dd1f3cb
      Ulrich Sibiller authored
      Fixes these two memory leaks identified by valgrind:
      
      ==28336== 32 (8 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 180 of 308
      ==28336==    at 0x48356AF: malloc (vg_replace_malloc.c:298)
      ==28336==    by 0x4837DE7: realloc (vg_replace_malloc.c:826)
      ==28336==    by 0x1AE322: AllocateDevicePrivate (privates.c:439)
      ==28336==    by 0x27527B: XkbSetExtension (xkbActions.c:72)
      ==28336==    by 0x198E9B: _RegisterPointerDevice (devices.c:361)
      ==28336==    by 0x1DBA35: InitInput (Init.c:440)
      ==28336==    by 0x14DBD6: main (main.c:303)
      ==28336==
      ==28336== 32 (8 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 181 of 308
      ==28336==    at 0x48356AF: malloc (vg_replace_malloc.c:298)
      ==28336==    by 0x4837DE7: realloc (vg_replace_malloc.c:826)
      ==28336==    by 0x1AE322: AllocateDevicePrivate (privates.c:439)
      ==28336==    by 0x27527B: XkbSetExtension (xkbActions.c:72)
      ==28336==    by 0x198F1B: _RegisterKeyboardDevice (devices.c:384)
      ==28336==    by 0x1DBA3D: InitInput (Init.c:441)
      ==28336==    by 0x14DBD6: main (main.c:303)
      4dd1f3cb
    • Ulrich Sibiller's avatar
      CloseDevice: call XkbRemoveResourceClient before freeing key class struct · ca741177
      Ulrich Sibiller authored
      This patch is not necessary at the current code level. But when xkb
      code introduced the dev->key check Xorg upstream missed that. So we
      backport it now to skip that trap when updating xkb code.
      
        Author: Alan Coopersmith <alan.coopersmith@sun.com>
        Date:   Mon Jan 4 18:21:54 2010 -0800
      
          CloseDevice: call XkbRemoveResourceClient before freeing key class struct
      
          XkbRemoveResourceClient() returns immediately if dev->key is NULL.
          CloseDevice calls XkbRemoveResourceClient until it removes all resources.
      
          If we free dev->key and NULL it before XkbRemoveResourceClient, then
          infinite loop ensues, and the server appears to hang on exit or crash.
      Signed-off-by: 's avatarAlan Coopersmith <alan.coopersmith@sun.com>
      Reviewed-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: 's avatarDaniel Stone <daniel@fooishbar.org>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      Backported-to-NX-by: 's avatarUlrich Sibiller <uli42@gmx.de>
      ca741177
    • Ulrich Sibiller's avatar
      Keyboard.c: nullify freed pointers · 340de78e
      Ulrich Sibiller authored
      While trying to properly free memory allocated by XKB I accidently
      called nxagentFreeKeyboardDeviceData twice and noticed it would cause
      a segfault here. As the other pointers are also nullified after
      being freed let's just do it here, too.
      340de78e
    • Ulrich Sibiller's avatar
      Screen.c: Fix: make sure RRCloseScreen is being called · 3b06ad51
      Ulrich Sibiller authored
      Fixes ArcticaProject/nx-libs#598
      
      In nxagentOpenScreen we first initialized the RRExtension for the
      screen and then replaced pScreen->CloseScreen by
      nxagentCloseScreen. This resulted in RandR's RRCloseScreen (and any
      other CloseScreen procedure installed by extensions) being no longer
      called.
      
      Moving RandR init after configuring pScreen->CloseScreen ensures the
      correct calling cascade:
      
      RRCloseScreen -> nxagentCloseScreen ->fbCloseScreen (called explicitly
      by nxagentCloseScreen).
      
      Which in turn will fix this memory leak:
      
      ==9688== 328 (312 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 271 of 319
      ==9688==    at 0x4837B65: calloc (vg_replace_malloc.c:752)
      ==9688==    by 0x4ED2C6: RRScreenInit (randr.c:329)
      ==9688==    by 0x1F2B18: nxagentInitRandRExtension (Extensions.c:122)
      ==9688==    by 0x1DEAFF: nxagentOpenScreen (Screen.c:1409)
      ==9688==    by 0x16D7F8: AddScreen (dispatch.c:4257)
      ==9688==    by 0x1DA0CF: InitOutput (Init.c:397)
      ==9688==    by 0x14DCC2: main (main.c:280)
      3b06ad51
    • Ulrich Sibiller's avatar
      Screen.c: correctly free stuff in nxagentCloseScreen · 0f8dbbab
      Ulrich Sibiller authored
      fixes a memory leak:
      
      ==19074== 2 bytes in 1 blocks are definitely lost in loss record 8 of 313
      ==19074==    at 0x483577F: malloc (vg_replace_malloc.c:299)
      ==19074==    by 0x1FD83D: fbAllocatePrivates (fballpriv.c:79)
      ==19074==    by 0x20A666: fbSetupScreen (fbscreen.c:110)
      ==19074==    by 0x20A666: fbScreenInit (fbscreen.c:300)
      ==19074==    by 0x1DEA4C: nxagentOpenScreen (Screen.c:1356)
      ==19074==    by 0x16D7F8: AddScreen (dispatch.c:4257)
      ==19074==    by 0x1DA0CF: InitOutput (Init.c:397)
      ==19074==    by 0x14DCC2: main (main.c:280)
      0f8dbbab
    • Ulrich Sibiller's avatar
      xkb: initialize tsyms · 308824ba
      Ulrich Sibiller authored
      Backport of this commit:
      
        commit b2167015043a458e9cf93b827b43eb5b7c552ce9
        Author: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
        Date:   Sat Nov 4 23:06:27 2017 +0100
      
          xkb: initialize tsyms
      
          This fixes some “Conditional jump depends on uninitialized value(s)”
          errors spotted by valgrind.
      Reviewed-by: 's avatarEric Engestrom <eric.engestrom@imgtec.com>
      Signed-off-by: 's avatarGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
      308824ba
    • Ulrich Sibiller's avatar
      Rootless.c: improve TEST/WARN/DEBUG outout · 6d00a387
      Ulrich Sibiller authored
      by adding [] around values as almost everywhere
      6d00a387
    • Ulrich Sibiller's avatar
      Pixmap.c: fix comment phrasing/spelling · 2b25eb3d
      Ulrich Sibiller authored
      2b25eb3d
    • Ulrich Sibiller's avatar
      Window.c: add missing comment about nxagentConfiguredWindowList · 1bfafc12
      Ulrich Sibiller authored
      was in inital version of 6ce9fb5f but got lost
      during some rebasing/cherry-picking preceeding the pull request.
      1bfafc12
    • Ulrich Sibiller's avatar
      dix/window.c: fix compiler warning · 1a8de635
      Ulrich Sibiller authored
      Window.c:3827:46: warning: array subscript 128 is above array bounds of ‘StoringPixmapRec *[128]’ {aka ‘struct <anonymous> *[128]’} [-Warray-bounds]
                     i, (void *) nxagentBSPixmapList[i]);
      1a8de635
  3. 12 Jun, 2019 5 commits
    • Ulrich Sibiller's avatar
      NXshm.c: remove left-overs from patch · 3900ba3f
      Ulrich Sibiller authored
      format was broken, would not compile
      3900ba3f
    • Ulrich Sibiller's avatar
      b961e190
    • Ulrich Sibiller's avatar
      mi: Hush an almost certainly bogus warning · 28e42b3b
      Ulrich Sibiller authored
        commit 57e872301f5e836be2efb8f952f9c9711650b447
        Author: Adam Jackson <ajax@redhat.com>
        Date:   Thu Apr 5 13:07:09 2018 -0400
      
          mi: Hush an almost certainly bogus warning
      
          In file included from ../mi/miexpose.c:83:
          ../mi/miexpose.c: In function ‘miHandleExposures’:
          ../include/regionstr.h:174:22: warning: ‘expBox.y2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
               (_pReg)->extents = *(_pBox);
               ~~~~~~~~~~~~~~~~~^~~~~~~~~~
          ../mi/miexpose.c:139:12: note: ‘expBox.y2’ was declared here
               BoxRec expBox;
                      ^~~~~~
      
          etc. It's initialized if (extents), and then only read if (extents),
          but gcc doesn't seem to figure that out. Whatever, bzero it to be
          explicit.
      Signed-off-by: 's avatarAdam Jackson <ajax@redhat.com>
      Acked-by: 's avatarKeith Packard <keithp@keithp.com>
      28e42b3b
    • Ulrich Sibiller's avatar
      Window.c: Drop defines CWParent and CWStackingOrder · 9f5ddede
      Ulrich Sibiller authored
      They were just aliases to already existing defines and were not used
      stringently. So we had mix of aliased and non-aliased uses which is
      confusing when trying to understand the code...
      9f5ddede
    • Ulrich Sibiller's avatar
      Window.c: remove leftover (commented) code · a3e0376f
      Ulrich Sibiller authored
      This was eventually replaced by nxagentAddConfiguredWindow(pWin,
      CW_Map) some lines below which is just leading to the same code being
      executed some time later.
      
      (nxagentAddConfiguredWindow() will add a window to a
      list. nxagentFlushConfiguredWindow() is called at certain points to
      update all windows in that list in one go. "update" here means calling
      XConfigureWindow() or XMapWindow() on the real display.)
      a3e0376f