Bug 215662 - IPC message can't be decoded due to uninitialized NavigationActionData member variables with the latest MSVC
Summary: IPC message can't be decoded due to uninitialized NavigationActionData member...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Fujii Hironori
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-08-19 14:29 PDT by Fujii Hironori
Modified: 2020-08-19 22:31 PDT (History)
3 users (show)

See Also:


Attachments
Patch to avoid encoding/decoding WebCore::LockHistory (932 bytes, patch)
2020-08-19 17:41 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
WIP patch (1.38 KB, patch)
2020-08-19 18:23 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
reproducer (300 bytes, text/plain)
2020-08-19 20:17 PDT, Fujii Hironori
no flags Details
Patch (2.77 KB, patch)
2020-08-19 21:07 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Patch for landing (2.79 KB, patch)
2020-08-19 21:15 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Fujii Hironori 2020-08-19 14:29:32 PDT
[WinCairo][MSVC] Release builds crash in WebKit::AuxiliaryProcess::didReceiveInvalidMessage since Visual Studio 2019 16.7.1

WinCairo, trunk@265891, Release build, WK2 
I tested with Visual Studio 2019 16.7.1.

> WTF.dll!WTFCrash() Line 295	C++
> WebKit2.dll!WebKit::AuxiliaryProcess::didReceiveInvalidMessage(IPC::Connection & __formal, IPC::MessageName messageName) Line 249	C++
> WebKit2.dll!IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder,std::default_delete<IPC::Decoder>> message) Line 1086	C++
> [Inline Frame] WebKit2.dll!IPC::Connection::dispatchOneIncomingMessage() Line 1139	C++
> [Inline Frame] WebKit2.dll!IPC::Connection::enqueueIncomingMessage::__l2::<lambda_e6394cea93af10ae0ef008ad9586ad3e>::operator()() Line 978	C++
> WebKit2.dll!WTF::Detail::CallableWrapper<<lambda_e6394cea93af10ae0ef008ad9586ad3e>,void>::call() Line 52	C++
> [Inline Frame] WTF.dll!WTF::Function<void __cdecl(void)>::operator()() Line 83	C++
> WTF.dll!WTF::RunLoop::performWork() Line 124	C++
> [Inline Frame] WTF.dll!WTF::RunLoop::wndProc(HWND__ *) Line 56	C++
> WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 39	C++
> user32.dll!UserCallWinProcCheckWow()	Unknown
> user32.dll!DispatchMessageWorker()	Unknown
> WTF.dll!WTF::RunLoop::run() Line 73	C++
> WebKit2.dll!WebKit::AuxiliaryProcessMain<WebKit::WebProcess,WebKit::WebProcessMainWin>(int argc, char * * argv) Line 71	C++
> WebKitWebProcess.exe!main(int argc, char * * argv) Line 35	C++
> [Inline Frame] WebKitWebProcess.exe!invoke_main() Line 78	C++
> WebKitWebProcess.exe!__scrt_common_main_seh() Line 288	C++
> kernel32.dll!BaseThreadInitThunk()	Unknown
> ntdll.dll!RtlUserThreadStart()	Unknown

Debug builds don't reproduce the crash.
VS 2019 16.7.2 doesn't reproduce the crash
Comment 1 Fujii Hironori 2020-08-19 14:33:46 PDT
Oops.

(In reply to Fujii Hironori from comment #0)
> I tested with Visual Studio 2019 16.7.1.

I'm using Visual Studio 2019 16.7.2.
Steph reported 16.7.1 also crashes.

> VS 2019 16.7.2 doesn't reproduce the crash

This is also wrong.
VS 2019 16.6.5. doesn't reproduce the crash
Comment 2 Fujii Hironori 2020-08-19 14:41:27 PDT
TestWebKit.exe can reproduce the WebKitWebProcess.exe crash. But, not 100%.

PS C:\home\webkit\gc> .\WebKitBuild\Release\bin64\TestWebKit.exe --gtest_filter=WebKit.AboutBlankLoad
Received invalid message: 'WebPage_LoadRequest'
1   00007FFCC6585093
2   00007FFCC657645E
3   00007FFCC65755DF
4   00007FFD0CB7F881
5   00007FFD0CBD31CC
6   00007FFD1F2C5C7D
7   00007FFD1F2C5672
8   00007FFD0CBD350B
9   00007FFCC63D8A8C
10  00007FF798E6100A
11  00007FF798E61204
12  00007FFD1E367BD4
13  00007FFD2030CE51
PS C:\home\webkit\gc> .\WebKitBuild\Release\bin64\TestWebKit.exe --gtest_filter=WebKit.AboutBlankLoad
**PASS** WebKit.AboutBlankLoad
Comment 3 Fujii Hironori 2020-08-19 17:41:33 PDT
Created attachment 406896 [details]
Patch to avoid encoding/decoding WebCore::LockHistory

WinCairo MiniBrowser works with this patch .
It seens that The latest MSVC can't encode/decode WebCore::LockHistory.
Comment 4 Fujii Hironori 2020-08-19 18:23:28 PDT
Created attachment 406898 [details]
WIP patch
Comment 5 Fujii Hironori 2020-08-19 20:17:10 PDT
Created attachment 406905 [details]
reproducer
Comment 7 Fujii Hironori 2020-08-19 21:07:10 PDT
Created attachment 406912 [details]
Patch
Comment 8 Darin Adler 2020-08-19 21:09:15 PDT
Comment on attachment 406912 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=406912&action=review

> Source/WebKit/Shared/NavigationActionData.h:50
> +    uint64_t userGestureTokenIdentifier { };

This will work, but a little surprised you didn’t write { 0 } instead.
Comment 9 Fujii Hironori 2020-08-19 21:15:11 PDT
Created attachment 406913 [details]
Patch for landing

Thank you for the review. Fixed.
Comment 10 Fujii Hironori 2020-08-19 22:30:04 PDT
Comment on attachment 406913 [details]
Patch for landing

Clearing flags on attachment: 406913

Committed r265935: <https://trac.webkit.org/changeset/265935>
Comment 11 Fujii Hironori 2020-08-19 22:30:08 PDT
All reviewed patches have been landed.  Closing bug.