From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44787 invoked by alias); 16 Feb 2016 09:36:49 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 44777 invoked by uid 89); 16 Feb 2016 09:36:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_05,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=233, Wines, wines, Wine's X-HELO: mail-wm0-f51.google.com Received: from mail-wm0-f51.google.com (HELO mail-wm0-f51.google.com) (74.125.82.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 16 Feb 2016 09:36:46 +0000 Received: by mail-wm0-f51.google.com with SMTP id g62so182571948wme.0 for ; Tue, 16 Feb 2016 01:36:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:reply-to:in-reply-to:references :from:date:message-id:subject:to:content-type; bh=C7CuTzkLD3fXn6tauOGnfcM87UITXkgqSU3aT6S7IXU=; b=CFJWqM+Dqm398PCHL+eDnS4VmkJQJR1UVioVQe3I7iDdwpZtvKmbKvbbUwvuQgXqKC upifzkq6Deyuup4DaRFlJOhWP5Stn2uDm9bqh0E/kThAfklQaS9oFPtu4P8tVNsKnm4P VpQAmi3CbceZG3hdQakYdnD5J47DcMOmtCRxP418uSjYMkY7zpn5sJT3aEiuxPvViknK tcrfUifkh06TLbOl3kR0CUOs7m+BLpUpBDdq4xXYgJayTBDONf8Tp+bOjNx03+4MNp1j EpAUKxJJc/45ECFqXW9bLw3Q0u84JpLIp82xOOWXx8oiqiWF9QGixf2ixN35ypgtHyPO U8Bg== X-Gm-Message-State: AG10YOTzFv6miNLGM/wVVPUrEozyDACfeA4QzBoP7CyjSweQ8cTAHAGJOgl6jkBgKu8DJGIolbyb0Rt3klekUw== X-Received: by 10.194.77.167 with SMTP id t7mr20357398wjw.90.1455615403872; Tue, 16 Feb 2016 01:36:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.178.21 with HTTP; Tue, 16 Feb 2016 01:36:04 -0800 (PST) Reply-To: fracting@gmail.com In-Reply-To: <56BF9370.80303@glup.org> References: <56BF9370.80303@glup.org> From: Qian Hong Date: Tue, 16 Feb 2016 09:36:00 -0000 Message-ID: Subject: Re: mktemp() fails on Wine 1.9.3 + Cygwin 2.5.0-0.2 To: cygwin , John Hood Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2016-02/txt/msg00242.txt.bz2 Hi John, This looks like a bug in wineserver. Cygwin strace log show an access error soon after fhandler_base::open() [main] mktemp 111 fhandler_base::open: (\??\C:\cygwin\tmp\tmp.kAEScb0yvo, 0x108A02) [main] mktemp 111 __set_errno: int aclsort32(int, int, aclent_t*):1403 setting errno 22 [main] mktemp 111 __set_errno: void* set_posix_access(mode_t, uid_t, gid_t, aclent_t*, int, security_descriptor&, bool):269 setting errno 13 fhandler_base::open() is forwarded to NtCreateFile, but Wine +relay,+server log show that NtCreateFile seems fine (please ignore the difference of random file name): 0009:Call ntdll.NtCreateFile(0060c7d4,c0100000,0060c7e8,0060c7e0,00000000,00000080,00000007,00000002,00004020,00000000,00000000) ret=6103a45d 0009:trace:ntdll:FILE_CreateFile handle=0x60c7d4 access=c0100000 name=L"\\??\\C:\\cygwin\\tmp\\tmp.BM21HIw0vU" objattr=00000042 root=(nil) sec=(nil) io=0x60c7e0 alloc_size=(nil) attr=00000080 sharing=00000007 disp=2 options=00004020 ea=(nil).0x00000000 0009:trace:file:wine_nt_to_unix_file_name L"\\??\\C:\\cygwin\\tmp\\tmp.BM21HIw0vU" -> "/media/workspace/wine-cygwin-1028/dosdevices/c:/cygwin/tmp/tmp.BM21HIw0vU" 0009: create_file( access=c0100000, sharing=00000007, create=2, options=00004020, attrs=00000080, objattr={rootdir=0000,attributes=00000042,sd={},name=L""}, filename="/media/workspace/wine-cygwin-1028/dosdevices/c:/cygwin/tmp/tmp.BM21HIw0vU" ) 0009: create_file() = 0 { handle=00f4 } 0009:Ret ntdll.NtCreateFile() retval=00000000 ret=6103a45d (looks identity to the good version of log, so I won't paste the good version here) In this case, comparing +relay,+server log between good case and bad case doesn't expose enough information, so we might need to compare Linux strace log from good case and bad case: [pid 11724] write(2, 0xb7584000, 2440009: create_file( access=c0100000, sharing=00000007, create=2, options=00004020, attrs=00000080, objattr={rootdir=0000,attributes=00000042,sd={},name=L""}, filename="/media/workspace/wine-cygwin-1028/dosdevices/c:/cygwin/tmp/tmp.2kmv323jLu" ) [pid 11732] close(9 [pid 11724] <... write resumed> ) = 244 [pid 11732] <... close resumed> ) = 0 [pid 11724] open(0xa3a0e90, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 107 [pid 11724] fstat64(107, {...}) = 0 [pid 11724] fgetxattr(107, 0x80a30e8, 0xbfe5dcec, 65536) = 314 [pid 11724] close(107) = 0 [pid 11724] open(0xa3a0e40, O_RDWR|O_CREAT|O_EXCL|O_NONBLOCK|O_LARGEFILE, 0555 By comparing to the good case, i found the above open syscall should open the file as 0666 mode. Related code below: https://github.com/wine-compholio/wine-patched/blob/master/server/file.c#L408 226 if (sd) 227 { 228 const SID *owner = sd_get_owner( sd ); 229 if (!owner) 230 owner = token_get_user( current->process->token ); 231 mode = sd_to_mode( sd, owner ); 232 } 233 else if (options & FILE_DIRECTORY_FILE) 234 mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0555 : 0777; 235 else 236 mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666; I need to do more research in order to write test and figure out the right way to fix this bug, my current guess is Wine's sd/token emulation is not completed yet, which cause unexpected behavior. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple