Opened 5 years ago

Last modified 5 years ago

#5446 new defect

Crash on Startup When Using Windows 10

Reported by: Trains Owned by:
Priority: Should Have Milestone: Backlog
Component: Core engine Keywords:
Cc: Patch:

Description (last modified by historic_bruno)

Assertion failed: "0 && ("SHGetFolderPathW failed (see debug output)")"
Location: wutil.cpp:293 (GetFolderPath)

Call stack:

GetFolderPath (wutil.cpp:293)
    csidl = 5 (0x00000005)
    path = "푸ËC:\Users\rvpm2\AppData\Local"

GetDirectories (wutil.cpp:324)
    s = 
        m_lastError = 0 (0x00000000)

    path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)

wutil_Init (wutil.cpp:562)

CallFunctionPointers (winit.cpp:74)
    begin = 0x00531678 -> 0x00000000
    end = 0x005316A0 -> 0x00000000

winit_CallInitFunctions (winit.cpp:89)

wstartup_InitAndRegisterShutdown (wstartup.cpp:109)

initterm_e (:0)

CallStartupWithinTryBlock (wseh.cpp:364)
    ret = 4646736 (0x0046E750)

RtlGetAppContainerNamedObjectPath (:0)

RtlGetAppContainerNamedObjectPath (:0)


errno = 0 (Unknown error (0, 0x0))
OS error = 21 (The device is not ready.)

There were no log files under the AppData directory. I have been running 0ad on Windows 10 but had to reinstall after the recent Windows update bricked the system. IT is running again but 0ad will not run after installing. Thank you for your assistance.

Change History (3)

comment:1 by Stan, 5 years ago

Hello, and thanks for the report.

It's weird, do you have special characters in your user folder ? One thing you could try is pass -writableRoot to the program executable and see if that fixes it.

in reply to:  1 comment:2 by historic_bruno, 5 years ago

Replying to stanislas69:

Hello, and thanks for the report.

It's weird, do you have special characters in your user folder ? One thing you could try is pass -writableRoot to the program executable and see if that fixes it.

Looks like #3267. The path shown there is garbage and can't be relied upon since SHGetFolderPathW failed (it's the old data in memory from a prior call). It does NOT mean Unicode or special characters in the path, please stop repeating that:

    wchar_t path[MAX_PATH]; // mandated by SHGetFolderPathW
    const HRESULT ret = SHGetFolderPathW(hwnd, csidl, token, 0, path);

Instead, we need the exact return code, which requires running DebugView and then the game (this never happened on #3267 either).

If Trains can do that, there's a chance we can finally get to the bottom of this.

comment:3 by historic_bruno, 5 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.