On 20/09/17(Wed) 01:02, Anthony J. Bentley wrote:
> Martin Pieuchot writes:
> > On 17/09/17(Sun) 17:05, Bryan Linton wrote:
> > > [ CCing all potentially involved parties, because I'd rather CC
> > > more people than necessary than leave out an interested party.
> > > Please ignore this mail if it's not relevant to you. ]
> > >
> > > [...]
> > >
> > > Reverting the above commit fixes the issue for me. Without the
> > > reversion, SDL games freeze at a black screen if a joypad is
> > > connected. Invoking "kill -9" or unplugging the joypad is the
> > > only way to unfreeze the program.
> >
> > When the program "freeze" what does top says? Where is it sleeping?
>
> PID USERNAME PRI NICE SIZE RES STATE WAIT TIME CPU COMMAND
> 30135 anthony 0 0 2616K 5596K idle uhidrea 0:00 0.00% gambatte_sdl
>
> > Could you please ktrace the freezing programme when this happen? What
> > do you see?
>
> Once it's frozen ktrace seems to show no output. Here's the last few
> lines if I run ktrace from the start:
> [...]
> 90169 gambatte_sdl CALL read(5,0x18f94585a804,0x4)
So it seems that the sleeping thread isn't awaken. Bryan Linton
provided some additional information, he said that emulators/mednafen
still work for him.
Do you know if the games are multi-threaded? Could you run "top -H" and
"kdump -H"?
Could you also run a kernel compiled with the following diff and see if
something is printed in the dmesg when the program "freeze"?
diff --git sys/dev/usb/uhid.c sys/dev/usb/uhid.c
index 184f30879e9..97c265a7ec2 100644
--- sys/dev/usb/uhid.c
+++ sys/dev/usb/uhid.c
@@ -59,10 +59,12 @@
#include <dev/usb/uhidev.h>
+#define UHID_DEBUG
+
#ifdef UHID_DEBUG
#define DPRINTF(x) do { if (uhiddebug) printf x; } while (0)
#define DPRINTFN(n,x) do { if (uhiddebug>(n)) printf x; } while (0)
-int uhiddebug = 0;
+int uhiddebug = 5;
#else
#define DPRINTF(x)
#define DPRINTFN(n,x)
@@ -179,7 +181,7 @@ uhid_intr(struct uhidev *addr, void *data, u_int len)
struct uhid_softc *sc = (struct uhid_softc *)addr;
#ifdef UHID_DEBUG
- if (uhiddebug > 5) {
+ if (uhiddebug > 6) {
u_int32_t i;
DPRINTF(("uhid_intr: data ="));
No comments:
Post a Comment