NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

xsrc/49553: Xorg hits 100% CPU on shutdown



>Number:         49553
>Category:       xsrc
>Synopsis:       Xorg hits 100% CPU on shutdown
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    xsrc-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jan 10 11:20:00 +0000 2015
>Originator:     Patrick Welche
>Release:        NetBSD-7.99.4/amd64 2015-01-05
>Organization:
>Environment:
Seen on ivy bridge, sandy bridge and pineview systems.
>Description:
On shutdown, Xorg loops ad infinitum at line 70 in sna_threads.c

xsrc/external/mit/xf86-video-intel/dist/src/sna/sna_threads.c

    68          while (1) {
    69                  while (t->func == NULL)
    70                          pthread_cond_wait(&t->cond, &t->mutex);
    71                  pthread_mutex_unlock(&t->mutex);
    72  
    73                  assert(t->func);
    74                  t->func(t->arg);
    75  
    76                  pthread_mutex_lock(&t->mutex);
    77                  t->arg = NULL;
    78                  t->func = NULL;
    79                  pthread_cond_signal(&t->cond);
    80          }

In http://mail-index.netbsd.org/current-users/2015/01/09/msg026453.html
Martin reports similar behaviour for radeon r600.


My wooly hunch impression is that I have been seeing this since

  revision 1.9
  date: 2015-01-01 01:15:43 +0000;  author: mrg;  state: Exp;  lines: +3 -3;  co
+mmitid: 1Hjcx4xU3q0p6g4y;
  due to hangs seen by several folks, for now revert:
  http://mail-index.netbsd.org/source-changes/2014/11/04/msg060120.html

  Log Message:
  This code should be MP-safe. Use IPL_SCHED in place of IPL_DRM/IPL_VM and set
  D_MPSAFE flag in cdevsw.

but I am loathe to revert to before that, as the running system is far more stable since!

>How-To-Repeat:
Run X, and e.g. shutdown -r now
(It seems to happen less often when running xsrc compiled with DBG=-g -O0)
>Fix:



Home | Main Index | Thread Index | Old Index