Friday, September 22, 2017

Re: mednafen 0.9.39.2 -> 0.9.46

On 2017-09-22 12:38:32, Martin Pieuchot <mpi@openbsd.org> wrote:
> On 20/09/17(Wed) 09:13, Anthony J. Bentley wrote:
> > Martin Pieuchot writes:
> > > Do you know if the games are multi-threaded? Could you run "top -H" and
> > > "kdump -H"?
> >
> > top -H shows a single line for gambatte.
>
> Thanks. Could you try the diff below? It includes some debug stuff and
> a potential fix.
>

I can confirm that this patch fixes dgen, mgba, and desmume for
me! I assume that other SDL programs would be fixed as well. I
encourage others to share their results.

FWIW, my dmesg is filled with things like the following (only the
last few lines pasted in):

1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidread
1 uhidread: got 7 chars
1 uhidclose: sc=0xffff8000005cd000

> I'm guessing that the problem is that my last change made uhid_do_ioctl()
> return an error for FIOASYNC. This makes the following syscall fall:
>
> 390: /* The poll blocks the event thread. */
> 391: fcntl(fd, F_SETFL, O_NONBLOCK)
>
>
> As a result FNONBLOCK is not set on the 'struct file' and uhid_do_read()
> block, or "freeze", when there's nothing to read instead of returning
> EWOULDBLOCK.
>
>

Hmm, it's interesting to know how the solution was arrived at :)

Thank you very much for taking the time to look into this!

--
Bryan

No comments:

Post a Comment