RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Daphne games freezing when trying to exit

    Scheduled Pinned Locked Moved Help and Support
    daphne
    28 Posts 9 Posters 4.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • mituM
      mitu Global Moderator
      last edited by

      Maybe it tries to send stats data to stats.daphe-emu.com and the address is no longer available ? Port/IP are defined here.

      DirtBagXonD 1 Reply Last reply Reply Quote 0
      • DirtBagXonD
        DirtBagXon @mitu
        last edited by

        @mitu said in Daphne games freezing when trying to exit:

        Maybe it tries to send stats data to stats.daphe-emu.com and the address is no longer available ? Port/IP are defined here.

        Gees, has the Daphne package been sending stats to Matt's old IP all this time....

        Just use the -noserversend argument in your .commands file - although the Setup script should set this as a default argument. The Daphne site has made some changes recently, those have probably, and inadvertedly, bought about this issue.

        Hypseus wiped all that "call-home" code long ago....

         

        Hypseus Singe for RetroPie: https://github.com/DirtBagXon/hypseus-singe
        Hypseus Singe Games: https://github.com/DirtBagXon/hypseus_singe_data
        Hypseus Discord: https://discord.gg/dgCsCfmRfJ

        1 Reply Last reply Reply Quote 1
        • RiverstormR
          Riverstorm
          last edited by

          @mitu - Thanks a bunch for the reply. Looking at a version from 3 years ago shows the same sub-domain but whoever owns the domain could change the DNS A record to redirect it anywhere really.
          You were right a reverse lookup did match the domain to the IP but I had no idea what to do with that information or if it was just a temporary error or something more needed to be done to the code.

          @DirtBagXon - Thanks a bunch also... you guys rock! That worked perfectly! I tested it on one game and will go through the rest of the them and add a commands file. That's so much nicer to exit a game and not sit and wait for 2 or 3 minutes... which feels like forever, which seems like it's locked up, which uugh, wait... but it's still playing the audio... ;)

          1 Reply Last reply Reply Quote 0
          • mituM
            mitu Global Moderator
            last edited by

            OK. the server call on shutdown was patched out, updating the package from source (and later on binary) should remove the slowdown. Thank you for reporting it.

            DirtBagXonD RiverstormR 2 Replies Last reply Reply Quote 2
            • DirtBagXonD
              DirtBagXon @mitu
              last edited by

              @mitu said in Daphne games freezing when trying to exit:

              OK. the server call on shutdown was patched out, updating the package from source (and later on binary) should remove the slowdown. Thank you for reporting it.

              Good call.

              Just for the curious, there was nothing ever nefarious about the call home, and it hasn't been collecting stats for a decade, or more. There is still a static page of what was collected, noting the top OS, aside from the posted timestamp, dates it in time (2009):

              http://www.daphne-emu.com/stats.html

              I'm guessing the IP has finally changed hands and maybe had filtering changed from a REJECT to DROP, that might account for the sudden change in behaviour on the socket timeout after all this time.

               

              Hypseus Singe for RetroPie: https://github.com/DirtBagXon/hypseus-singe
              Hypseus Singe Games: https://github.com/DirtBagXon/hypseus_singe_data
              Hypseus Discord: https://discord.gg/dgCsCfmRfJ

              1 Reply Last reply Reply Quote 1
              • RiverstormR
                Riverstorm @mitu
                last edited by

                @mitu said in Daphne games freezing when trying to exit:

                OK. the server call on shutdown was patched out, updating the package from source (and later on binary) should remove the slowdown. Thank you for reporting it.

                @mitu - Just to verify. I should be able to update from source to correct the issue? I did an update from source (Daphne under Optional packages) and it didn't fix it. Then I updated to RP 4.8.8 (Pi 4) and the did another Daphne update from source but I'm still seeing the same error below.

                connect(11, {sa_family=AF_INET, sin_port=htons(7733), sin_addr=inet_addr("66.150.214.242")}, 16) = -1 ETIMEDOUT (Connection timed out)
                
                mituM 1 Reply Last reply Reply Quote 0
                • mituM
                  mitu Global Moderator @Riverstorm
                  last edited by

                  @Riverstorm I'll take another look, thanks for letting me know.

                  1 Reply Last reply Reply Quote 0
                  • mituM
                    mitu Global Moderator
                    last edited by

                    I've checked and the only instance of Daphne sending data to the server is not active anymore - not sure why you're still seeing that connection. If you try to update the daphne package, does it says that you have the latest version ?

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      StuMcBill @mitu
                      last edited by

                      @mitu I did a full update of my system yesterday (first in a few weeks) and the first update was Daphne and it said there was no update available.

                      mituM 1 Reply Last reply Reply Quote 0
                      • mituM
                        mitu Global Moderator @StuMcBill
                        last edited by

                        @StuMcBill that's ok, I guess, does it have anything to do with the current topic ?

                        1 Reply Last reply Reply Quote 0
                        • mituM
                          mitu Global Moderator
                          last edited by

                          Ok, I found the error - the fix was applied to the main branch, but the package in RetroPie is built from a separate branch.

                          1 Reply Last reply Reply Quote 1
                          • RiverstormR
                            Riverstorm
                            last edited by

                            @mitu - I redownload from source fairly late last night/this morning with the same results. I didn't want to post until I poked around a bit more today but since you found the problem, here's a few screenshots of what I was seeing.

                            I'll download from source again here in a bit and let you know. Thank you a bunch for looking into this issue, it's very much appreciated!

                            Capture.JPG

                            Capture1.JPG

                            1 Reply Last reply Reply Quote 0
                            • RiverstormR
                              Riverstorm
                              last edited by Riverstorm

                              @mitu - Just a quick update. I'm still seeing the issue. I updated the RP script first (no change it looked like), then Daphne from source. The screenshots in the previous post are the same except the time & date changed of course.

                              Here's a trace from the point it hangs (at the IP). If anything further up could possibly help I can post more. As soon as the timeout completes it closes immediately. The audio does continue on the attract mode loop until close. The screen freezes on whatever frame is currently being displayed.

                              Daphne runs perfect for all games except on exit. If I am doing something incorrectly here just let me know.

                              socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 11
                              connect(11, {sa_family=AF_INET, sin_port=htons(7733), sin_addr=inet_addr("66.150.214.242")}, 1666.150.214.242) = -1 ETIMEDOUT (Connection timed out)
                              close(11)                               = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=954427}, NULL) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=954510}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=954711}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=954907}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=955105}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=955299}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=955494}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=955689}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=955884}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=956091}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=956286}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=956479}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=956672}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=956865}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=957058}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=957268}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=957463}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=957656}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=957848}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=958040}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=958244}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=958442}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=958641}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=958835}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=959029}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=959226}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=959442}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=959643}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=959861}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=960058}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=960252}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=960794}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=961001}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=961201}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=961406}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=961610}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=961833}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=962034}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=962234}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=962434}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=962631}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=962837}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=963059}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=963258}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=963459}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=963658}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=963872}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=964121}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=964399}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=964616}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=964874}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=965088}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=965287}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=965487}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=965683}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=965880}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=966332}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=966528}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=966722}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=966917}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=967112}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=967313}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=967507}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=967702}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=967896}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=968091}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=968297}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=968492}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=968686}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=968878}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=969068}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=969259}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=969463}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=969652}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=969850}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=970040}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=970230}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=970449}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=970639}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=970829}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=971021}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=971212}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=971401}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=971607}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=971796}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=971986}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=972176}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=972366}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=972566}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=972752}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=972937}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=973123}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=973311}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=973498}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=973702}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=973890}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=974078}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=974232}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=974424}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=974614}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=974819}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=975008}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=975197}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=975387}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=975576}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=975762}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=975950}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=976137}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=976324}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=976515}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=976704}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=976913}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=977102}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=977293}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=977485}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=977669}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=977869}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=978059}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=978248}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=978437}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=978627}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=978817}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=979023}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=979213}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=979401}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=979594}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=979799}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=980017}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=980206}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=980396}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=980584}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=980773}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=980962}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=981167}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=981357}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=981546}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=981736}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=981925}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=982125}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=982312}, NULL) = 0
                              nanosleep({tv_sec=0, tv_nsec=0}, 0xbeb519f0) = 0
                              gettimeofday({tv_sec=1721589369, tv_usec=982510}, NULL) = 0
                              futex(0xb2deb3e8, FUTEX_WAIT, 11179, NULL) = 0
                              openat(AT_FDCWD, "/opt/retropie/emulators/daphne/daphne_log.txt", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
                              _llseek(8, 0, [2105], SEEK_END)         = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
                              _llseek(8, 2105, [2105], SEEK_SET)      = 0
                              _llseek(8, 0, [0], SEEK_SET)            = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2105, ...}) = 0
                              write(8, "Freeing memory used to store aud"..., 44) = 44
                              close(8)                                = 0
                              openat(AT_FDCWD, "/opt/retropie/emulators/daphne/daphne_log.txt", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
                              _llseek(8, 0, [2149], SEEK_END)         = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2149, ...}) = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2149, ...}) = 0
                              _llseek(8, 2149, [2149], SEEK_SET)      = 0
                              _llseek(8, 0, [0], SEEK_SET)            = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2149, ...}) = 0
                              write(8, "\r\n", 2)                     = 2
                              close(8)                                = 0
                              munmap(0xb16a8000, 12767232)            = 0
                              close(10)                               = 0
                              munmap(0xb2535000, 495616)              = 0
                              munmap(0xb3657000, 495616)              = 0
                              munmap(0xb25ae000, 249856)              = 0
                              openat(AT_FDCWD, "/opt/retropie/emulators/daphne/daphne_log.txt", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
                              _llseek(8, 0, [2151], SEEK_END)         = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2151, ...}) = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2151, ...}) = 0
                              _llseek(8, 2151, [2151], SEEK_SET)      = 0
                              _llseek(8, 0, [0], SEEK_SET)            = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2151, ...}) = 0
                              write(8, "Shutting down sound system...", 29) = 29
                              close(8)                                = 0
                              openat(AT_FDCWD, "/opt/retropie/emulators/daphne/daphne_log.txt", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
                              _llseek(8, 0, [2180], SEEK_END)         = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2180, ...}) = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2180, ...}) = 0
                              _llseek(8, 2180, [2180], SEEK_SET)      = 0
                              _llseek(8, 0, [0], SEEK_SET)            = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2180, ...}) = 0
                              write(8, "\r\n", 2)                     = 2
                              close(8)                                = 0
                              futex(0xb35ec3e8, FUTEX_WAIT, 11178, NULL) = 0
                              ioctl(9, SNDRV_PCM_IOCTL_SYNC_PTR, 0x20c9fa8) = 0
                              ioctl(9, SNDRV_PCM_IOCTL_DRAIN, 0x20c9fa8) = 0
                              ioctl(9, SNDRV_PCM_IOCTL_SYNC_PTR, 0x20c9fa8) = 0
                              ioctl(9, SNDRV_PCM_IOCTL_DROP, 0x20c9fa8) = 0
                              ioctl(9, SNDRV_PCM_IOCTL_HW_FREE, 0x20c9fa8) = 0
                              close(9)                                = 0
                              munmap(0xb5113000, 163840)              = 0
                              openat(AT_FDCWD, "/opt/retropie/emulators/daphne/daphne_log.txt", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
                              _llseek(8, 0, [2182], SEEK_END)         = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2182, ...}) = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2182, ...}) = 0
                              _llseek(8, 2182, [2182], SEEK_SET)      = 0
                              _llseek(8, 0, [0], SEEK_SET)            = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2182, ...}) = 0
                              write(8, "Shutting down video display...", 30) = 30
                              close(8)                                = 0
                              openat(AT_FDCWD, "/opt/retropie/emulators/daphne/daphne_log.txt", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
                              _llseek(8, 0, [2212], SEEK_END)         = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2212, ...}) = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2212, ...}) = 0
                              _llseek(8, 2212, [2212], SEEK_SET)      = 0
                              _llseek(8, 0, [0], SEEK_SET)            = 0
                              fstat64(8, {st_mode=S_IFREG|0644, st_size=2212, ...}) = 0
                              write(8, "\r\n", 2)                     = 2
                              close(8)                                = 0
                              rt_sigaction(SIGINT, NULL, {sa_handler=0xb6f091cc, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6a05110}, 8) = 0
                              rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6a05110}, NULL, 8) = 0
                              rt_sigaction(SIGTERM, NULL, {sa_handler=0xb6f091cc, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6a05110}, 8) = 0
                              rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6a05110}, NULL, 8) = 0
                              close(6)                                = 0
                              ioctl(5, KDSETMODE, 0)                  = 0
                              ioctl(5, KDSKBMODE, 0x3)                = 0
                              ioctl(5, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
                              ioctl(5, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 opost isig icanon echo ...}) = 0
                              ioctl(5, TCGETS, {B38400 opost isig icanon echo ...}) = 0
                              ioctl(5, VT_UNLOCKSWITCH, 0x1)          = -1 EPERM (Operation not permitted)
                              ioctl(5, VT_ACTIVATE, 0x1)              = 0
                              close(5)                                = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519bc) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a8) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = -1 EAGAIN (Resource temporarily unavailable)
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = -1 EAGAIN (Resource temporarily unavailable)
                              futex(0xb6719cb0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, FUTEX_BITSET_MATCH_ANY) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519bc) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a8) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519b4) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = -1 EAGAIN (Resource temporarily unavailable)
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = -1 EAGAIN (Resource temporarily unavailable)
                              futex(0xb6719cb0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, FUTEX_BITSET_MATCH_ANY) = 0
                              ioctl(7, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0xbeb519a0) = 4
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xec008) = 0
                              ioctl(7, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0xbeb519cc) = 0
                              ioctl(7, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xec008) = 0
                              munmap(0xb513b000, 618496)              = 0
                              munmap(0xb5a45000, 1171456)             = 0
                              munmap(0xb5a0c000, 233472)              = 0
                              munmap(0xb59d3000, 233472)              = 0
                              rt_sigaction(SIGSEGV, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
                              rt_sigaction(SIGBUS, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
                              rt_sigaction(SIGFPE, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
                              rt_sigaction(SIGQUIT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
                              close(4)                                = 0
                              getpid()                                = 11170
                              write(1, "--DAPHNE version 1.0.13\n--Comman"..., 2162) = 2162
                              exit_group(0)                           = ?
                              +++ exited with 0 +++
                              
                              mituM 1 Reply Last reply Reply Quote 0
                              • mituM
                                mitu Global Moderator @Riverstorm
                                last edited by

                                @Riverstorm said in Daphne games freezing when trying to exit:

                                @mitu - Just a quick update. I'm still seeing the issue. ..

                                I said I found the cause, but the code hasn't been patched yet. I'll add an update here when it is.

                                1 Reply Last reply Reply Quote 0
                                • RiverstormR
                                  Riverstorm
                                  last edited by

                                  @mitu - I apologize, I misread it, I didn't mean to sound like it's a hurry. Especially with an easy workaround.

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    ddt8022
                                    last edited by

                                    I just updated the Daphne package from source and it worked!! I can now exit all my Daphne games with no problems!! 🙏

                                    P 1 Reply Last reply Reply Quote 0
                                    • P
                                      ppgcart @ddt8022
                                      last edited by ppgcart

                                      I was having the same issue. Updated Daphne from source last night and it's working perfect now. No more freezing on exit. Thank you!!!

                                      1 Reply Last reply Reply Quote 0
                                      • mituM
                                        mitu Global Moderator
                                        last edited by

                                        Hm, it seems the patchfix has been merged a couple of days ago and I didn't notice - @Riverstorm try updating now from source and see if you also get the fixed version.

                                        1 Reply Last reply Reply Quote 1
                                        • RiverstormR
                                          Riverstorm
                                          last edited by

                                          @mitu - It's working perfectly, I tested several games and all exit immediately without the -noserversend command (thanks for the tip @DirtBagXon) . Thanks a bunch for the fix and have a nice weekend. Enjoy the games if you're a watcher! :)

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post

                                          Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                          Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.