Hallo,
in loader/module.c:MODULE_DllProcessAttach the recursion to attach ends as soon as _one_ initialization fails. This leaves other modules uninitialized. I had this problem with xnview and native shell (without native shfolder). The missing SHGetFolderPathA caused COMDLG32_DllEntryPoint to return FALSE and in cause WSVFW32_LibMain wasn't called. Later this caused MULTIMEDIA_GetIData to not find it's IData and cause a crash. The missing HGetFolderPathA wasn't the culprit.
I think the original error was obscured to much here. Either we judge a failing InitDLL as error and abort there, or in MODULE_DllProcessAttach we should recurse without looking at the result.
What about appended patch?
Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de writes:
A failed InitDLL is an error, we can't simply ignore it and continue. We have to unload the dll and its dependencies in that case; but that's not entirely trivial to do.