Fails to launch batch script in some directories

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Fri Apr 20 13:11:00 GMT 2018


On 2018年04月20日 06:33, David Macek wrote:
> Whoa, an interesting bug.  I'm forwarding this to the Cygwin mailing list for
> reference.  I might take a deeper look over the weekend if no-one beats me to it.
>> It seems like running batch files (.bat, .cmd) inside a directory with an at
> sign and a space (such as '@ x' or 'x @') fails.
>> /w/temp/@ x$ ./hello.bat
> 'W:\temp\@' is not recognized as an internal or external command,
> operable program or batch file.

>From strace on cmd run from directory created with same name, looks like
child_info_spawn::worker may need to escape/double quote the name if it contains
spaces:
 65 119143 [main] bash 9384 spawnve: spawnve (./ntpstatus.cmd,
./ntpstatus.cmd, 0x60006F6B0)
 34 119177 [main] bash 9384 child_info_spawn::worker: mode = 3, prog_arg =
./ntpstatus.cmd
 36 119213 [main] bash 9384 perhaps_suffix: prog './ntpstatus.cmd'
 30 119243 [main] bash 9384 normalize_posix_path: src ./ntpstatus.cmd
 28 119271 [main] bash 9384 cwdstuff::get: posix /proc/cygdrive/c/.../@ x
 29 119300 [main] bash 9384 cwdstuff::get: (/proc/cygdrive/c/.../@ x) =
cwdstuff::get (0x600000010, 32768, 1, 0), errno 108
 29 119329 [main] bash 9384 normalize_posix_path: /proc/cygdrive/c/.../@
x/ntpstatus.cmd = normalize_posix_path (./ntpstatus.cmd)
 30 119359 [main] bash 9384 mount_info::conv_to_win32_path:
conv_to_win32_path (/proc/cygdrive/c/.../@ x/ntpstatus.cmd)
 33 119392 [main] bash 9384 mount_info::cygdrive_win32_path: src
'/proc/cygdrive/c/.../@ x/ntpstatus.cmd', dst 'C:\...\@ x\ntpstatus.cmd'
 33 119425 [main] bash 9384 set_flags: flags: binary (0x2)
 28 119453 [main] bash 9384 mount_info::conv_to_win32_path: src_path
/proc/cygdrive/c/.../@ x/ntpstatus.cmd, dst C:\...\@ x\ntpstatus.cmd, flags
0x4022, rc 0
 153 119606 [main] bash 9384 symlink_info::check: 0x0 = NtCreateFile
(\??\C:\...\@ x\ntpstatus.cmd)
 85 119691 [main] bash 9384 symlink_info::check: not a symlink
 79 119770 [main] bash 9384 symlink_info::check: 0 = symlink.check(C:\...\@
x\ntpstatus.cmd, 0xFFFFA850) (0x4022)
 55 119825 [main] bash 9384 path_conv::check: this->path(C:\...\@
x\ntpstatus.cmd), has_acls(1)
 35 119860 [main] bash 9384 perhaps_suffix: buf C:\...\@ x\ntpstatus.cmd,
suffix found ''
 90 119950 [main] bash 9384 child_info_spawn::worker: priority class 32
 95 120045 [main] bash 9384 fhandler_console::need_invisible: invisible_console 0
 39 120084 [main] bash 9384 build_env: envp 0x60006F6B0
 38 120122 [main] bash 9384 spenv::retrieve: no_envblock 0
 40 120162 [main] bash 9384 spenv::retrieve: duping existing value for
'USERDOMAIN='
 48 120210 [main] bash 9384 spenv::retrieve: no_envblock 0
 39 120249 [main] bash 9384 spenv::retrieve: duping existing value for
'USERNAME='
 29 120278 [main] bash 9384 spenv::retrieve: no_envblock 0
 28 120306 [main] bash 9384 spenv::retrieve: duping existing value for
'LOGONSERVER='
 35 120341 [main] bash 9384 spenv::retrieve: no_envblock 0
 32 120373 [main] bash 9384 spenv::retrieve: no_envblock 0
 27 120400 [main] bash 9384 spenv::retrieve: duping existing value for
'USERPROFILE='
 29 120429 [main] bash 9384 spenv::retrieve: no_envblock 0
 27 120456 [main] bash 9384 spenv::retrieve: duping existing value for
'SYSTEMROOT='
 43 120499 [main] bash 9384 spenv::retrieve: no_envblock 0
 31 120530 [main] bash 9384 spenv::retrieve: duping existing value for 'WINDIR='
 37 120567 [main] bash 9384 spenv::retrieve: no_envblock 0
 30 120597 [main] bash 9384 spenv::retrieve: no_envblock 0
 27 120624 [main] bash 9384 spenv::retrieve: duping existing value for
'HOMEDRIVE='
 33 120657 [main] bash 9384 spenv::retrieve: no_envblock 0
 28 120685 [main] bash 9384 spenv::retrieve: duping existing value for
'HOMEPATH='
 34 120719 [main] bash 9384 build_env: env count 108, bytes 9407
 324 121043 [main] bash 9384 build_env: envp 0x180306DA8, envc 108
 34 121077 [main] bash 9384 child_info::child_info: subproc_ready 0x0
20253 141330 [main] bash 9384 child_info_spawn::worker: pid 9384, prog_arg
./ntpstatus.cmd, cmd line "C:\...\@ x\ntpstatus.cmd")
 102 141432 [main] bash 9384! child_info_spawn::worker: new process name
\\?\C:\...\@ x\ntpstatus.cmd
 56 141488 [main] bash 9384! fhandler_base::close_with_arch: line 1129:
/dev/pty0<0x1803054F0> usecount + -1 = 3
 31 141519 [main] bash 9384! fhandler_base::close_with_arch: not closing
archetype
 67 141586 [main] bash 9384! fhandler_base::close_with_arch: line 1129:
/dev/pty0<0x1803054F0> usecount + -1 = 2
 33 141619 [main] bash 9384! fhandler_base::close_with_arch: not closing
archetype
 34 141653 [main] bash 9384! fhandler_base::close_with_arch: line 1129:
/dev/pty0<0x1803054F0> usecount + -1 = 1
 35 141688 [main] bash 9384! fhandler_base::close_with_arch: not closing
archetype
 38 141726 [main] bash 9384! child_info_spawn::worker: spawned windows pid 9260
 52 141778 [main] bash 9384! proc_subproc: args: 1, -2145357536
--- Process 9260 created
--- Process 9384 thread 8320 created
 306 142084 [main] bash 9384! pinfo::wait: created tracking thread for pid
9384, winpid 0x242C, rd_proc_pipe 0x284
 48 142132 [main] bash 9384! proc_subproc: added pid 9384 to proc table, slot 0
 45 142177 [main] bash 9384! proc_subproc: returning 1
--- Process 9260 loaded C:\Windows\System32\ntdll.dll at 00007ffb92730000
 89 142266 [waitproc] bash 9384! cygthread::stub: thread 'waitproc', id
0x2080, stack_ptr 0x329CCD0
--- Process 9260 loaded C:\Windows\System32\kernel32.dll at 00007ffb918e0000
--- Process 9260 loaded C:\Windows\System32\KernelBase.dll at 00007ffb8f750000
--- Process 9260 loaded C:\Windows\System32\msvcrt.dll at 00007ffb91840000
--- Process 9260 thread 5056 created
--- Process 2844 created
--- Process 2844 loaded C:\Windows\System32\ntdll.dll at 00007ffb92730000
--- Process 2844 loaded C:\Windows\System32\kernel32.dll at 00007ffb918e0000
--- Process 2844 loaded C:\Windows\System32\KernelBase.dll at 00007ffb8f750000
--- Process 2844 loaded C:\Windows\System32\msvcrt.dll at 00007ffb91840000
--- Process 2844 thread 5964 created
--- Process 2844 thread 32 created
--- Process 2844 loaded C:\Windows\System32\ulib.dll at 00007ffb7dcd0000
--- Process 2844 thread 6228 created
--- Process 2844 loaded C:\Windows\System32\fsutilext.dll at 00007ffb8a980000
--- Process 2844 thread 5964 exited with status 0x0
--- Process 2844 thread 6228 exited with status 0x0
--- Process 2844 thread 32 exited with status 0x0
--- Process 2844 exited with status 0x0
--- Process 9260 thread 5056 exited with status 0x1
--- Process 9260 exited with status 0x1
45516 187782 [waitproc] bash 9384! pinfo::maybe_set_exit_code_from_windows: pid
9384, exit value - old 0x0, windows 0x1, cygwin 0x8000100
 110 187892 [waitproc] bash 9384! proc_waiter: exiting wait thread for pid 9384
 47 187939 [main] bash 9384! proc_terminate: nprocs 1
 81 188020 [main] bash 9384! proc_subproc: args: 5, 1
 80 188100 [main] bash 9384! proc_subproc: clear waiting threads
 47 188147 [main] bash 9384! proc_subproc: finished clearing
 34 188181 [main] bash 9384! proc_subproc: returning 1
 30 188211 [main] bash 9384! cygthread::terminate_thread: thread '(null)', id
0x2080, inuse 0, stack_ptr 0x329CCD0
 31 188242 [main] bash 9384! proc_terminate: leaving
 30 188272 [main] bash 9384! pinfo::maybe_set_exit_code_from_windows: pid
9384, exit value - old 0x8000100, windows 0xDEADBEEF, cygwin 0x8000100
 55 188327 [main] bash 9384! pinfo::exit: Calling ExitProcess n 0x4000000,
exitcode 0x1
-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
--
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


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /