Skip to content
Snippets Groups Projects
  1. Jul 11, 2023
    • Bernhard Übelacker's avatar
      ntdll: Add read and write to commited guard pages. · 34e56fa8
      Bernhard Übelacker authored
      Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55138
      
      
      wine bash.exe
      notepad.exe
      wine: Unhandled page fault on write access to 00000007FFFF81F8 at address 0000000180265986 (thread 0130), starting debugger...
      
      
      wine bash.exe -c 'WIN_ROOT="$(PATH=${MSYS2_PATH} exec /usr/bin/cygpath -Wu)"; echo $WINROOT'
      /usr/bin/bash: Zeile 1: /usr/bin/cygpath: Bad address
      /usr/bin/bash: Zeile 1: /usr/bin/cygpath: No error
      
      
      Based on: https://bugs.winehq.org/attachment.cgi?id=70483
        (Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47808)
      34e56fa8
    • Bernhard Übelacker's avatar
      ntdll: Basic FileRenameInformationEx. · 1140cfb9
      Bernhard Übelacker authored
      04b8:fixme:file:NtSetInformationFile Unsupported class (65)
      
      msys:
        mv msys64/etc/pacman.d/gnupg msys64/etc/pacman.d/gnupg.old
        pacman-key --init
        pacman-key --populate
      1140cfb9
    • Bernhard Übelacker's avatar
      server: Reset reported_events if socket gets reused. · 4942ada1
      Bernhard Übelacker authored
      MSYS setup tries to setup some pacman/gpg key configuration.
      This involves starting dirmngr.exe which unfortunately hangs.
      Therefore gpg reports:
          gpg: connecting dirmngr at '/etc/pacman.d/gnupg/S.dirmngr' failed: IPC connect call failed
      And fails therefore "silently".
      
      The hang in dirmngr.exe looks to be a result of reusing a socket twice.
      When the first connection attempt failed, wineserver still has
      the reported_events set.
      Therefore on the second attempt WSAEnumNetworkEvents does no longer
      report those events.
      But fhandler_socket_wsock::wait_for_events gets just left when
      there are some events received.
      
      Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53574
      
      dirmngr.exe --server --no-detach --homedir /etc/pacman.d/gnupg --verbose
      
      (gdb) bt
      #0  fhandler_socket_wsock::evaluate_events (this=0x800028718, event_mask=48, events=@0x67dfc278: 0, erase=true) at /home/bernhard/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/fhandler/socket_inet.cc:307
      #1  0x000000018015a287 in fhandler_socket_wsock::wait_for_events (this=0x800028718, event_mask=48, flags=0) at /home/bernhard/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/fhandler/socket_inet.cc:404
      #2  0x000000018015b267 in fhandler_socket_inet::connect (this=0x800028718, name=0x67dfc810, namelen=16) at /home/bernhard/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/fhandler/socket_inet.cc:802
      #3  0x000000018008c63c in cygwin_connect (fd=3, name=0x67dfc810, namelen=16) at /home/bernhard/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/net.cc:709
      #4  0x00000001801c348b in _sigfe () at sigfe.s:36
      #5  0x00000005a3099a57 in __assuan_connect (ctx=<optimized out>, sock=<optimized out>, addr=<optimized out>, length=<optimized out>) at system-posix.c:430
      #6  0x00000005a30922c6 in _assuan_connect (ctx=ctx@entry=0xa00020830, sock=sock@entry=3, addr=addr@entry=0x67dfc810, length=length@entry=16) at system.c:412
      #7  0x00000005a30989c8 in socks5_connect (ctx=ctx@entry=0xa00020830, sock=sock@entry=3, socksport=socksport@entry=9050, credentials=credentials@entry=0x0, hostname=hostname@entry=0x5a309d7fa <okstr+1466> "", hostport=hostport@entry=0, addr=addr@entry=0x0, length=length@entry=0) at assuan-socket.c:754
      #8  0x00000005a3099315 in _assuan_sock_connect_byname (ctx=0xa00020830, host=host@entry=0x0, port=port@entry=0, reserved=reserved@entry=0, credentials=credentials@entry=0x0, flags=flags@entry=2) at assuan-socket.c:1148
      #9  0x00000005a30993f7 in assuan_sock_connect_byname (host=host@entry=0x0, port=port@entry=0, reserved=reserved@entry=0, credentials=credentials@entry=0x0, flags=flags@entry=2) at assuan-socket.c:1497
      #10 0x0000000100402531 in dirmngr_use_tor () at dirmngr.c:607
      #11 0x000000010040256c in set_tor_mode () at dirmngr.c:582
      #12 0x00000001004025eb in post_option_parsing () at dirmngr.c:898
      #13 0x0000000100403532 in main (argc=<optimized out>, argv=<optimized out>) at dirmngr.c:1211
      (gdb) print evts.lNetworkEvents
      $1 = 0
      4942ada1
    • Bernhard Übelacker's avatar
      ws2_32: Disable check for local socket handles. · cef76dff
      Bernhard Übelacker authored
      MSYS does a `dup(sockfd)` via DuplicateHandle.
      Unfortunately that way the new handle is not contained in
      the ws2_32.socket_list.
      
      This change just disables this check to workaround this.
      
      
      Kind of related: https://bugs.winehq.org/show_bug.cgi?id=54413
      
      
      wine c:/msys64/usr/bin/git.exe clone --mirror git://sourceware.org/git/newlib-cygwin.git /home/bernhard/MSYS2-packages/msys2-runtime/msys2-runtime
      
      
      (rr) list fhandler_base::dup
      1320    int
      1321    fhandler_base::dup (fhandler_base *child, int flags)
      1322    {
      1323      debug_printf ("in fhandler_base dup");
      1324
      1325      HANDLE nh;
      1326      if (!nohandle () && !archetype)
      1327        {
      1328          if (!DuplicateHandle (GetCurrentProcess (), get_handle (),
      1329                                GetCurrentProcess (), &nh,
      1330                                0, !(flags & O_CLOEXEC), DUPLICATE_SAME_ACCESS))
      1331            {
      1332              debug_printf ("dup(%s) failed, handle %p, %E",
      1333                            get_name (), get_handle ());
      1334              __seterrno ();
      1335              return -1;
      1336            }
      1337
      1338          VerifyHandle (nh);
      1339          child->set_handle (nh);
      1340        }
      1341      return 0;
      1342    }
      (rr) print x
      $29 = (HANDLE) 0x150
      (rr) bt
      #0  fhandler_base::set_handle (this=0x800027a28, x=0x150) at /home/Benutzer1/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/local_includes/fhandler.h:238
      #1  0x000000018011315a in fhandler_base::dup (this=0x800027318, child=0x800027a28, flags=32768) at /home/Benutzer1/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/fhandler/base.cc:1339
      #2  0x000000018015a8c8 in fhandler_socket_wsock::dup (this=0x800027318, child=0x800027a28, flags=32768) at /home/Benutzer1/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/fhandler/socket_inet.cc:558
      #3  0x000000018005f6ec in dtable::dup_worker (this=0x800004858, oldfh=0x800027318, flags=32768) at /home/Benutzer1/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/dtable.cc:707
      #4  0x000000018005fa56 in dtable::dup3 (this=0x800004858, oldfd=3, newfd=4, flags=32768) at /home/Benutzer1/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/dtable.cc:774
      #5  0x00000001800dd567 in dup (fd=3) at /home/Benutzer1/MSYS2-packages/msys2-runtime/src/msys2-runtime/winsup/cygwin/syscalls.cc:96
      #6  0x00000001801c348b in _sigfe () at sigfe.s:36
      #7  0x0000000a00000003 in ?? ()
      #8  0x0000000000000040 in ?? ()
      #9  0x0a0a0a0a0a0a0a0a in ?? ()
      #10 0x0000000a00003e66 in ?? ()
      #11 0x0000000a00003e90 in ?? ()
      #12 0x000000010050d4b2 in git_connect_git (fd=fd@entry=0xa00003c40, hostandport=0xa00003e70 "sourceware.org", path=0xa00003e50 "/git/newlib-cygwin.git", prog=prog@entry=0x10067bcd9 <junk_leave_repo_msg+1913> "git-upload-pack", version=version@entry=protocol_v2, flags=flags@entry=0) at connect.c:1257
      #13 0x000000010050e4ad in git_connect (fd=fd@entry=0xa00003c40, url=0xa000033e0 "git://sourceware.org/git/newlib-cygwin.git", prog=0x10067bcd9 <junk_leave_repo_msg+1913> "git-upload-pack", flags=0) at connect.c:1437
      #14 0x0000000100622f65 in connect_setup (transport=transport@entry=0xa000038a0, for_push=for_push@entry=0) at transport.c:278
      #15 0x0000000100623043 in handshake (transport=0xa000038a0, for_push=0, options=0x67dfc800, must_list_refs=must_list_refs@entry=1) at transport.c:313
      #16 0x0000000100623254 in get_refs_via_connect (transport=<optimized out>, for_push=<optimized out>, options=<optimized out>) at transport.c:360
      #17 0x0000000100624f9c in transport_get_remote_refs (transport=transport@entry=0xa000038a0, transport_options=transport_options@entry=0x67dfc800) at transport.c:1474
      #18 0x0000000100426005 in cmd_clone (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin/clone.c:1274
      #19 0x0000000100401330 in run_builtin (p=0x10065a218 <commands+504>, argc=argc@entry=4, argv=argv@entry=0x67dfcc08) at git.c:445
      #20 0x00000001004015e2 in handle_builtin (argc=4, argv=0x67dfcc08) at git.c:699
      #21 0x0000000100402aa3 in run_argv (argcp=argcp@entry=0x67dfcb70, argv=argv@entry=0x67dfcb78) at git.c:763
      #22 0x0000000100402f28 in cmd_main (argc=<optimized out>, argc@entry=5, argv=<optimized out>, argv@entry=0x67dfcc00) at git.c:898
      #23 0x00000001004ce4d7 in main (argc=5, argv=0x67dfcc00) at common-main.c:57
      cef76dff
    • Bernhard Übelacker's avatar
      ntdll: Ignore pointers outside of the current stack in exception handlers. · e11ec611
      Bernhard Übelacker authored
      https://bugs.winehq.org/show_bug.cgi?id=52159
      
      01f0:err:virtual:virtual_setup_exception stack overflow 2896 bytes addr 0x1700563a3 stack 0x672004b0 (0x67200000-0x67201000-0x67e00000)
      e11ec611
    • Bernhard Übelacker's avatar
      server: Allow access with PROCESS_QUERY_INFORMATION. · 36dde1fd
      Bernhard Übelacker authored
      0128:fixme:sync:QueryUnbiasedInterruptTimePrecise (000000000031BB50): semi-stub.
            0 [main] gpg 1017 fixup_mmaps_after_fork: VirtualQueryEx failed for MAP_PRIVATE address 0x7FFC0000, Win32 error 5
        15823 [main] gpg 1017 C:\msys64\usr\bin\gpg.exe: *** fatal error in forked process - recreate_mmaps_after_fork_failed
      0128:trace:unixpid:NtTerminateProcess unixpid=120034 L"\"C:\\msys64\\usr\\bin\\gpg.exe\" --homedir /etc/pacman.d/gnupg/ --no-permission-warning -K --with-colons" self=1 NtCurrentTeb()=0x67fe0000 NtCurrentTeb()->Peb=0x67ff0000 :999
      8064141 [main] gpg 1016 dofork: child -1 - forked process 292 died unexpectedly, retry 0, exit code 0x100, errno 11
      00d4:fixme:virtual:get_extended_params Not supported requirements LowestStartingAddress 0x1000000000, Alignment (nil).
      gpg: Fehler beim "Forken" des Prozess: Resource temporarily unavailable
      gpg: failed to start agent '/usr/bin/gpg-agent': Resource temporarily unavailable
      gpg: can't connect to the agent: Resource temporarily unavailable
      gpg: error: GnuPG agent unusable. Please check that a GnuPG agent can be started.
      gpg: migration aborted
      00d4:trace:unixpid:NtTerminateProcess unixpid=120008 L"\"C:\\msys64\\usr\\bin\\gpg.exe\" --homedir /etc/pacman.d/gnupg/ --no-permission-warning -K --with-colons" self=1 NtCurrentTeb()=0x67fe0000 NtCurrentTeb()->Peb=0x67ff0000 :999
      36dde1fd
    • Bernhard Übelacker's avatar
      ntdll: Implement reading multiple entries in NtQueryDirectoryObject.... · ef137969
      Bernhard Übelacker authored
      ntdll: Implement reading multiple entries in NtQueryDirectoryObject. (Generated changes after protocol change.)
      ef137969
    • Elizabeth Figura's avatar
    • Jinoh Kang's avatar
      server: Allow creating named pipes using \Device\NamedPipe\ as RootDirectory. · ccd2d04c
      Jinoh Kang authored and Bernhard Übelacker's avatar Bernhard Übelacker committed
      Separate the named pipe root directory from the named pipe device file.
      Open the root directory instead of the device file if the path ends
      with backslash.
      
      Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52105
      
      
      Signed-off-by: default avatarJinoh Kang <jinoh.kang.kr@gmail.com>
      ccd2d04c
    • Bernhard Übelacker's avatar
      TEMP: ntdll: Print fixme just once. · 5abe8a1a
      Bernhard Übelacker authored
      02e0:fixme:process:NtQueryInformationProcess (0x5c4,info_class=51,0x1780040,0x00002810,0x12cc674) Unknown information class ProcessHandleInformation
      
      wine "C:/users/bernhard/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/MSYS2/MSYS2 MSYS.lnk"
      pacman -S gdb
      5abe8a1a
    • Bernhard Übelacker's avatar
      TEMP: win32u: Print fixme just once. · 2da09d48
      Bernhard Übelacker authored
      0114:fixme:icon:NtUserDrawIconEx Error retrieving icon frame 0
      
      wine msys2-x86_64-20230318.exe
      2da09d48
    • Bernhard Übelacker's avatar
      TEMP: uxtheme: Print fixme just once. · 9732385a
      Bernhard Übelacker authored
      0118:fixme:uxtheme:DrawThemeTextEx unsupported flags 0x00002800
      9732385a
    • Bernhard Übelacker's avatar
      RR-DEBUG: winemenubuilder: Exit early if run under rr-debugger. · e42450f8
      Bernhard Übelacker authored
      To save some execution time, otherwise some timeouts are reached.
      e42450f8
    • Bernhard Übelacker's avatar
    • Bernhard Übelacker's avatar
      RR-DEBUG: ntdll: Print unix pid and tid of each thread, commandline, wait on... · 75699a6c
      Bernhard Übelacker authored
      RR-DEBUG: ntdll: Print unix pid and tid of each thread, commandline, wait on exit and Qt environment.
      75699a6c
    • Keno Fischer's avatar
      ntdll/server: Make robust to spurious short writes · 30d4df3c
      Keno Fischer authored and Bernhard Übelacker's avatar Bernhard Übelacker committed
      
      It is possible for the write/writev functions in send_request to
      return short writes, even in non-error conditions. There are
      several situations where this might happen. Examples are:
       - SIGSTOP/SIGCONT (either explicitly or via ptrace attach)
       - cgroup freezes and similar mechanisms
       - system suspends
       - External debuggers or profilers
      
      In general, Linux makes very few guarantees about syscall restarts.
      In some cases (in particular when no bytes have been transferred at all),
      the linux kernel will automatically restart the system call, but once any
      bytes have been transferred, the result will be a short write with
      no automatic restart.
      
      Make wine robust to this corner case by properly restarting a
      short write with adjusted buffers.
      
      Signed-off-by: default avatarKeno Fischer <keno@juliacomputing.com>
      30d4df3c
  2. Jul 10, 2023
Loading