[DragonFlyBSD - Bug #3200] (In Progress) master: weston screen freezes

bugtracker-admin at leaf.dragonflybsd.org bugtracker-admin at leaf.dragonflybsd.org
Sun Nov 3 12:52:22 PST 2019


Issue #3200 has been updated by ftigeot.

Status changed from New to In Progress

"lwq" locks are wait queue locks used by Linux wait_event() and similar macros.

DragonFly's existing implementations of these macros was keeping the lock during the whole sleep cycle instead of releasing it before sleeping like Linux.
This has been changed in master -- commit 85bc18adc3f2e6c133e21d5ba7b8e44bbafd9fe9 .

Hopefully that commit should prevent this deadlock situation from happening again.

----------------------------------------
Bug #3200: master: weston screen freezes
http://bugs.dragonflybsd.org/issues/3200#change-13833

* Author: peeter
* Status: In Progress
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
----------------------------------------
It has now happened at least four times in a row. After a few days of uptime, weston freezes. I can still ssh into the machine, everything else seems fine except the graphics screen is frozen. ps axlRH shows that weston is in state 'drmev'. 

1001   1262      1   1261  25 199   0 266664 193568 drmev    D0+    v1    7:36.42     /usr/local/bin/weston --use-pixman

This is the 'stuct event_lock' in 'struct drm_device', which is used among other things in the context of ioctls. kgdb shows this backtrace for weston: 

---
(kgdb) thread 1096
[Switching to thread 1096 (pid 1262/1, weston)]
#0  0xffffffff80665e76 in lwkt_switch () at /usr/src/sys/kern/lwkt_thread.c:810
810		lwkt_switch_return(td->td_switch(ntd));
(kgdb) bt
#0  0xffffffff80665e76 in lwkt_switch () at /usr/src/sys/kern/lwkt_thread.c:810
#1  0xffffffff8067300e in tsleep (ident=ident at entry=0xfffff8037b927c70, flags=flags at entry=1024, wmesg=<optimized out>, timo=timo at entry=0)
    at /usr/src/sys/kern/kern_synch.c:707
#2  0xffffffff8064040d in lockmgr_exclusive (lkp=lkp at entry=0xfffff8037b927c70, flags=flags at entry=2) at /usr/src/sys/kern/kern_lock.c:381
#3  0xffffffff83087a66 in lockmgr (flags=2, lkp=0xfffff8037b927c70) at @/sys/lock.h:271
#4  spin_lock_irq (lock=0xfffff8037b927c70) at /usr/src/sys/dev/drm/i915/../../../dev/drm/include/linux/spinlock.h:55
#5  intel_crtc_has_pending_flip (crtc=<optimized out>) at /usr/src/sys/dev/drm/i915/intel_display.c:3223
#6  intel_crtc_wait_for_pending_flips (crtc=<optimized out>) at /usr/src/sys/dev/drm/i915/intel_display.c:3841
#7  intel_atomic_prepare_commit (nonblock=<optimized out>, state=0xfffff8042ca0f340, dev=<optimized out>)
    at /usr/src/sys/dev/drm/i915/intel_display.c:13480
#8  intel_atomic_commit (dev=<optimized out>, state=0xfffff8042ca0f340, nonblock=<optimized out>)
    at /usr/src/sys/dev/drm/i915/intel_display.c:13614
#9  0xffffffff83d7bf6c in drm_atomic_helper_set_config (set=0xfffff80390f8d678) at /usr/src/sys/dev/drm/drm/../drm_atomic_helper.c:1878
#10 0xffffffff83d54842 in drm_mode_set_config_internal (set=set at entry=0xfffff80390f8d678) at /usr/src/sys/dev/drm/drm/../drm_crtc.c:2687
#11 0xffffffff83d54f60 in drm_mode_setcrtc (dev=0xfffff8037b927900, data=0xfffff80390f8d868, file_priv=<optimized out>)
    at /usr/src/sys/dev/drm/drm/../drm_crtc.c:2919
#12 0xffffffff83d704f1 in drm_ioctl (ap=<optimized out>) at /usr/src/sys/dev/drm/drm/../drm_ioctl.c:705
#13 0xffffffff80627885 in dev_dioctl (dev=dev at entry=0xfffff801581b1c80, cmd=cmd at entry=3228066978, 
    data=data at entry=0xfffff80390f8d868 "\360\003\270", fflag=<optimized out>, cred=cred at entry=0xfffff8007370f190, 
    msg=msg at entry=0xfffff80390f8d960, fp=0xfffff8037acb3180) at /usr/src/sys/kern/kern_device.c:244
#14 0xffffffff808f78e5 in devfs_fo_ioctl (fp=0xfffff8037acb3180, com=3228066978, data=0xfffff80390f8d868 "\360\003\270", 
    ucred=0xfffff8007370f190, msg=0xfffff80390f8d960) at /usr/src/sys/vfs/devfs/devfs_vnops.c:1545
#15 0xffffffff80697f6a in fo_ioctl (msg=<optimized out>, cred=<optimized out>, data=<optimized out>, com=<optimized out>, fp=0xfffff8037acb3180)
    at /usr/src/sys/sys/file2.h:84
#16 mapped_ioctl (fd=<optimized out>, com=<optimized out>, uspc_data=<optimized out>, map=0x0, msg=<optimized out>)
    at /usr/src/sys/kern/sys_generic.c:717
#17 0xffffffff80b96400 in syscall2 (frame=0xfffff80390f8d9f8) at /usr/src/sys/platform/pc64/x86_64/trap.c:1308
#18 0xffffffff80b7159d in ?? () at /usr/src/sys/platform/pc64/x86_64/exception.S:450
#19 0x0000000000000009 in ?? ()
#20 0x00000000c06864a2 in ?? ()
#21 0x00007fffffdfc8a0 in ?? ()
#22 0x0000000000000000 in ?? ()
---

Not sure this is helpful but that's all I've got for now. 

I attach the output of 'ps axlRH', maybe there's something else I should look out for.


Peeter

--


---Files--------------------------------
drmev-psalRH.out (159 KB)
weston-drmev-bug-2.md (54.5 KB)


-- 
You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account


More information about the Bugs mailing list