Friday, September 22, 2017

Re: mednafen 0.9.39.2 -> 0.9.46

On Fri, Sep 22, 2017, at 05:18, Bryan Linton wrote:
> 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
>

The patch also allows fixes controllers in mednafen, for what it's
worth. Thanks, all, for investigating!

No comments:

Post a Comment