[Bug 47989] FL Studio 20 hangs on splash screen (reading from default stdin causes indefinite blocking)

WineHQ Bugzilla wine-bugs at winehq.org
Tue Nov 24 04:25:41 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=47989

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
                 CC|                            |focht at gmx.net
                URL|                            |https://web.archive.org/web
                   |                            |/20201111124727/https://dem
                   |                            |odownload.image-line.com/fl
                   |                            |studio/flstudio_win_20.7.3.
                   |                            |1987.exe
             Status|NEEDINFO                    |NEW
            Summary|FL Studio 20 hangs on       |FL Studio 20 hangs on
                   |splash screen               |splash screen (reading from
                   |                            |default stdin causes
                   |                            |indefinite blocking)

--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

Adding stable download link via Internet Archive:

https://web.archive.org/web/20201111124727/https://demodownload.image-line.com/flstudio/flstudio_win_20.7.3.1987.exe

The app tries to read at one point from stdin which causes the hang. It's a GUI
process, not supposed to do interact with console.

Workaround #1 (others already mentioned)

Start the app from a helper process via 'start' - there just needs to be a
parent process:

Workaround #2:

Provide stdin via redirect which causes failure by design but doesn't block:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Image-Line/FL Studio 20

$ wine ./FL.exe < /dev/null
--- snip ---

Without parent (causes hang on reading stdin):

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Image-Line/FL Studio 20

$ WINEDEBUG=+seh,+relay,+loaddll,+server,+console,+msvcrt wine ./FL.exe
>>log.txt 2>&1
...
0024:Call ntdll.__wine_init_unix_lib(00450000,00000001,00000000,004e73e0)
ret=00489a72
0024:trace:msvcrt:__wine_init_unix_lib
0024:Ret  ntdll.__wine_init_unix_lib() retval=00000000 ret=00489a72
0024:Call KERNEL32.GetStartupInfoA(0031ede4) ret=00474032
0024:Ret  KERNEL32.GetStartupInfoA() retval=7b612f60 ret=00474032
...
0024:Call KERNEL32.GetStdHandle(fffffff6) ret=004742bd
0024:Ret  KERNEL32.GetStdHandle() retval=0000002f ret=004742bd
0024:Call KERNEL32.GetFileType(0000002f) ret=004742c5
0024:Ret  KERNEL32.GetFileType() retval=00000002 ret=004742c5
0024:Call KERNEL32.SetStdHandle(fffffff6,0000002f) ret=0047432b
0024:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=0047432b
...
0024:Call KERNEL32.GetStdHandle(fffffff5) ret=00474401
0024:Ret  KERNEL32.GetStdHandle() retval=0000000c ret=00474401
0024:Call KERNEL32.GetFileType(0000000c) ret=00474409
0024:Call
ntdll.NtQueryVolumeInformationFile(0000000c,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
0024: get_handle_fd( handle=000c )
0024: *fd* 000c -> 25
0024: get_handle_fd() = 0 { type=1, cacheable=1, access=00120116,
options=00000020 }
0024:Ret  ntdll.NtQueryVolumeInformationFile() retval=00000000 ret=7b0180cf
0024:Ret  KERNEL32.GetFileType() retval=00000001 ret=00474409
0024:Call KERNEL32.SetStdHandle(fffffff5,0000000c) ret=0047446f
0024:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=0047446f
...
0024:Call KERNEL32.GetStdHandle(fffffff4) ret=00474569
0024:Ret  KERNEL32.GetStdHandle() retval=00000010 ret=00474569
0024:Call KERNEL32.GetFileType(00000010) ret=00474571
0024:Call
ntdll.NtQueryVolumeInformationFile(00000010,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
0024: get_handle_fd( handle=0010 )
0024: *fd* 0010 -> 26
0024: get_handle_fd() = 0 { type=1, cacheable=1, access=00120116,
options=00000020 }
0024:Ret  ntdll.NtQueryVolumeInformationFile() retval=00000000 ret=7b0180cf
0024:Ret  KERNEL32.GetFileType() retval=00000001 ret=00474571
0024:Call KERNEL32.SetStdHandle(fffffff4,00000010) ret=004745d7
0024:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=004745d7
0024:trace:msvcrt:msvcrt_init_io :handles (0000002F)(0000000C)(00000010)
0024:trace:msvcrt:msvcrt_init_console :Opening console handles
0024:Call KERNEL32.CreateFileA(004ca02e
"CONIN$",c0000000,00000003,00000000,00000003,00000000,00000000) ret=00464117
...
0024:Call
ntdll.NtCreateFile(0031ed94,c0100080,0031ed50,0031ed70,00000000,00000000,00000003,00000001,00000060,00000000,00000000)
ret=7b0128f4
0024: open_file_object( access=c0100080, attributes=00000040, rootdir=0000,
sharing=00000003, options=00000060, filename=L"\\??\\CONIN$" )
0024: open_file_object() = 0 { handle=0034 }
0024:Ret  ntdll.NtCreateFile() retval=00000000 ret=7b0128f4
...
0024:Ret  KERNEL32.CreateFileA() retval=00000037 ret=00464117
...
0024:Call KERNEL32.GetFileAttributesW(0387288c L"C:\\Program
Files\\Image-Line\\FL Studio 20\\Data\\Templates.nfo") ret=009847fa
...
0024:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=009847fa
0024:Call KERNEL32.GetLastError() ret=00984853
0024:Ret  KERNEL32.GetLastError() retval=00000002 ret=00984853
0024:Call KERNEL32.GetStdHandle(fffffff6) ret=00967926
0024:Ret  KERNEL32.GetStdHandle() retval=0000002f ret=00967926
0024:Call KERNEL32.ReadFile(0000002f,0031dfa0,00000080,0031dd60,00000000)
ret=009677c3
0024:Call
ntdll.NtReadFile(0000002f,00000000,00000000,00000000,0031dc88,0031dfa0,00000080,00000000,00000000)
ret=7b012c62
0024: get_handle_fd( handle=002f )
0024: get_handle_fd() = BAD_DEVICE_TYPE { type=0, cacheable=1, access=00000000,
options=00000000 }
0024: read(
async={handle=002f,event=0000,iosb=0031dc88,user=7e52ced0,apc=00000000,apc_context=00000000},
pos=00000000 )
0024: read() = PENDING { wait=01d8, options=00000020, data={} }
0024: select( flags=2, cookie=0031d08c, timeout=infinite, size=8,
prev_apc=0000, result={}, data={WAIT_ALL,handles={01d8}}, context={} )
0024: select() = PENDING { call={APC_NONE}, apc_handle=0000, context={} }

<waits forever>
--- snip ---

It should fail to read from stdin and not block indefinately.

With stdin redirect using '/dev/null' (no hang):

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Image-Line/FL Studio 20

$ WINEDEBUG=+seh,+relay,+loaddll,+server,+console,+msvcrt wine ./FL.exe <
/dev/null >>log.txt 2>&1
...
0024:Call ntdll.__wine_init_unix_lib(00450000,00000001,00000000,004e73e0)
ret=00489a72
0024:trace:msvcrt:__wine_init_unix_lib
0024:Ret  ntdll.__wine_init_unix_lib() retval=00000000 ret=00489a72
0024:Call KERNEL32.GetStartupInfoA(0031ede4) ret=00474032
0024:Ret  KERNEL32.GetStartupInfoA() retval=7b612f60 ret=00474032
...
0024:Call KERNEL32.GetStdHandle(fffffff6) ret=004742bd
0024:Ret  KERNEL32.GetStdHandle() retval=00000008 ret=004742bd
0024:Call KERNEL32.GetFileType(00000008) ret=004742c5
0024:Call
ntdll.NtQueryVolumeInformationFile(00000008,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
0024: get_handle_fd( handle=0008 )
0024: *fd* 0008 -> 23
0024: get_handle_fd() = 0 { type=7, cacheable=1, access=00120089,
options=00000020 }
0024:Ret  ntdll.NtQueryVolumeInformationFile() retval=00000000 ret=7b0180cf
0024:Ret  KERNEL32.GetFileType() retval=00000002 ret=004742c5
0024:Call KERNEL32.SetStdHandle(fffffff6,00000008) ret=0047432b
0024:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=0047432b
...
0024:Call KERNEL32.GetStdHandle(fffffff5) ret=00474401
0024:Ret  KERNEL32.GetStdHandle() retval=0000000c ret=00474401
0024:Call KERNEL32.GetFileType(0000000c) ret=00474409
0024:Call
ntdll.NtQueryVolumeInformationFile(0000000c,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
0024: get_handle_fd( handle=000c )
0024: *fd* 000c -> 25
0024: get_handle_fd() = 0 { type=1, cacheable=1, access=00120116,
options=00000020 }
0024:Ret  ntdll.NtQueryVolumeInformationFile() retval=00000000 ret=7b0180cf
0024:Ret  KERNEL32.GetFileType() retval=00000001 ret=00474409
0024:Call KERNEL32.SetStdHandle(fffffff5,0000000c) ret=0047446f
0024:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=0047446f
...
0024:Call KERNEL32.GetStdHandle(fffffff4) ret=00474569
0024:Ret  KERNEL32.GetStdHandle() retval=00000010 ret=00474569
0024:Call KERNEL32.GetFileType(00000010) ret=00474571
0024:Call
ntdll.NtQueryVolumeInformationFile(00000010,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
0024: get_handle_fd( handle=0010 )
0024: *fd* 0010 -> 26
0024: get_handle_fd() = 0 { type=1, cacheable=1, access=00120116,
options=00000020 }
0024:Ret  ntdll.NtQueryVolumeInformationFile() retval=00000000 ret=7b0180cf
0024:Ret  KERNEL32.GetFileType() retval=00000001 ret=00474571
0024:Call KERNEL32.SetStdHandle(fffffff4,00000010) ret=004745d7
0024:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=004745d7
0024:trace:msvcrt:msvcrt_init_io :handles (00000008)(0000000C)(00000010)
0024:trace:msvcrt:msvcrt_init_console :Opening console handles
0024:Call KERNEL32.CreateFileA(004ca02e
"CONIN$",c0000000,00000003,00000000,00000003,00000000,00000000) ret=00464117
...
0024:Call
ntdll.NtCreateFile(0031ed94,c0100080,0031ed50,0031ed70,00000000,00000000,00000003,00000001,00000060,00000000,00000000)
ret=7b0128f4
0024: open_file_object( access=c0100080, attributes=00000040, rootdir=0000,
sharing=00000003, options=00000060, filename=L"\\??\\CONIN$" )
0024: open_file_object() = INVALID_HANDLE { handle=0000 }
0024:Ret  ntdll.NtCreateFile() retval=c0000008 ret=7b0128f4
...
0024:Ret  KERNEL32.CreateFileA() retval=ffffffff ret=00464117
...
0024:Call KERNEL32.GetFileAttributesW(03872a3c L"C:\\Program
Files\\Image-Line\\FL Studio 20\\Data\\Templates.nfo") ret=009847fa
...
0024:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=009847fa
0024:Call KERNEL32.GetLastError() ret=00984853
0024:Ret  KERNEL32.GetLastError() retval=00000002 ret=00984853
0024:Call KERNEL32.GetStdHandle(fffffff6) ret=00967926
0024:Ret  KERNEL32.GetStdHandle() retval=00000008 ret=00967926
0024:Call KERNEL32.ReadFile(00000008,0031e918,00000080,0031e6d8,00000000)
ret=009677c3
0024:Call
ntdll.NtReadFile(00000008,00000000,00000000,00000000,0031e608,0031e918,00000080,00000000,00000000)
ret=7b012c62
0024:Ret  ntdll.NtReadFile() retval=c0000011 ret=7b012c62
0024:Ret  KERNEL32.ReadFile() retval=00000001 ret=009677c3
0024:Call user32.KillTimer(00010174,00000006) ret=00d059c7
0024: kill_win_timer( win=00010174, id=00000006, msg=00000113 )
0024: kill_win_timer() = INVALID_PARAMETER
0024:Ret  user32.KillTimer() retval=00000000 ret=00d059c7
0024:Call KERNEL32.GetFileAttributesW(0385a24c L"C:\\users\\focht\\My
Documents\\Image-Line\\FL Studio\\Projects\\Backup\\") ret=009847fa
...
--- snip ---

With parent process using 'start.exe' (no hang):

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Image-Line/FL Studio 20

$ WINEDEBUG=+seh,+relay,+loaddll,+server,+console,+msvcrt wine start ./FL.exe
>>log.txt 2>&1
...
00fc:Call ntdll.__wine_init_unix_lib(00450000,00000001,00000000,004e73e0)
ret=00489a72
00fc:trace:msvcrt:__wine_init_unix_lib
00fc:Ret  ntdll.__wine_init_unix_lib() retval=00000000 ret=00489a72
00fc:Call KERNEL32.GetStartupInfoA(0031ede4) ret=00474032
00fc:Ret  KERNEL32.GetStartupInfoA() retval=7b612f60 ret=00474032
...
00fc:Call KERNEL32.GetStdHandle(fffffff6) ret=004742bd
00fc:Ret  KERNEL32.GetStdHandle() retval=0000002f ret=004742bd
00fc:Call KERNEL32.GetFileType(0000002f) ret=004742c5
00fc:Ret  KERNEL32.GetFileType() retval=00000002 ret=004742c5
00fc:Call KERNEL32.SetStdHandle(fffffff6,0000002f) ret=0047432b
00fc:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=0047432b
...
00fc:Call KERNEL32.GetStdHandle(fffffff5) ret=00474401
00fc:Ret  KERNEL32.GetStdHandle() retval=0000000c ret=00474401
00fc:Call KERNEL32.GetFileType(0000000c) ret=00474409
00fc:Call
ntdll.NtQueryVolumeInformationFile(0000000c,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
00fc: get_handle_fd( handle=000c )
00fc: get_handle_fd() = OBJECT_TYPE_MISMATCH { type=0, cacheable=0,
access=00000000, options=00000000 }
00fc:Ret  ntdll.NtQueryVolumeInformationFile() retval=c0000024 ret=7b0180cf
00fc:Call ntdll.RtlNtStatusToDosError(c0000024) ret=7b0180da
00fc:Ret  ntdll.RtlNtStatusToDosError() retval=00000006 ret=7b0180da
00fc:Ret  KERNEL32.GetFileType() retval=00000000 ret=00474409
00fc:Call KERNEL32.SetStdHandle(fffffff5,00000000) ret=0047446f
00fc:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=0047446f
...
00fc:Call KERNEL32.GetStdHandle(fffffff4) ret=00474569
00fc:Ret  KERNEL32.GetStdHandle() retval=00000010 ret=00474569
00fc:Call KERNEL32.GetFileType(00000010) ret=00474571
00fc:Call
ntdll.NtQueryVolumeInformationFile(00000010,0031ed94,0031ed9c,00000008,00000004)
ret=7b0180cf
00fc:Ret  ntdll.NtQueryVolumeInformationFile() retval=00000000 ret=7b0180cf
00fc:Ret  KERNEL32.GetFileType() retval=00000001 ret=00474571
00fc:Call KERNEL32.SetStdHandle(fffffff4,00000010) ret=004745d7
00fc:Ret  KERNEL32.SetStdHandle() retval=00000001 ret=004745d7
00fc:trace:msvcrt:msvcrt_init_io :handles (0000002F)(FFFFFFFE)(00000010)
00fc:trace:msvcrt:msvcrt_init_console :Opening console handles
00fc:Call KERNEL32.CreateFileA(004ca02e
"CONIN$",c0000000,00000003,00000000,00000003,00000000,00000000) ret=00464117
...
00fc:Call
ntdll.NtCreateFile(0031ed94,c0100080,0031ed50,0031ed70,00000000,00000000,00000003,00000001,00000060,00000000,00000000)
ret=7b0128f4
00fc: open_file_object( access=c0100080, attributes=00000040, rootdir=0000,
sharing=00000003, options=00000060, filename=L"\\??\\CONIN$" )
00fc: open_file_object() = INVALID_HANDLE { handle=0000 }
00fc:Ret  ntdll.NtCreateFile() retval=c0000008 ret=7b0128f4
...
00fc:Ret  KERNEL32.CreateFileA() retval=ffffffff ret=00464117
...
00fc:Call KERNEL32.GetFileAttributesW(0387288c L"C:\\Program
Files\\Image-Line\\FL Studio 20\\Data\\Templates.nfo") ret=009847fa
...
00fc:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=009847fa
00fc:Call KERNEL32.GetLastError() ret=00984853
00fc:Ret  KERNEL32.GetLastError() retval=00000002 ret=00984853
00fc:Call KERNEL32.GetStdHandle(fffffff6) ret=00967926
00fc:Ret  KERNEL32.GetStdHandle() retval=0000002f ret=00967926
00fc:Call KERNEL32.ReadFile(0000002f,0031dfa0,00000080,0031dd60,00000000)
ret=009677c3
00fc:Call
ntdll.NtReadFile(0000002f,00000000,00000000,00000000,0031dc88,0031dfa0,00000080,00000000,00000000)
ret=7b012c62
00fc:Ret  ntdll.NtReadFile() retval=c0000022 ret=7b012c62
00fc:Call ntdll.RtlNtStatusToDosError(c0000022) ret=7b012cc2
00fc:Ret  ntdll.RtlNtStatusToDosError() retval=00000005 ret=7b012cc2
00fc:Ret  KERNEL32.ReadFile() retval=00000000 ret=009677c3
00fc:Call KERNEL32.GetLastError() ret=009677cc
00fc:Ret  KERNEL32.GetLastError() retval=00000005 ret=009677cc
00fc:Call KERNEL32.GetFileAttributesW(03858e4c L"C:\\users\\focht\\My
Documents\\Image-Line\\FL Studio\\Projects\\Backup\\") ret=009847fa
...
00fc:Ret  KERNEL32.GetFileAttributesW() retval=00000010 ret=009847fa
...
--- snip ---

$ sha1sum flstudio_win_20.7.3.1987.exe 
fdb22ed93d7ed3134cb6bb6839741bf2f87f7674  flstudio_win_20.7.3.1987.exe

$ du -sh flstudio_win_20.7.3.1987.exe 
910M    flstudio_win_20.7.3.1987.exe

$ wine --version
wine-5.22-39-g4807a8f588c

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list