msi: add dummy thread just to initialize an MTA; fixes bug 18070

Hans Leidekker hans at codeweavers.com
Sun Jun 21 10:13:39 CDT 2009


Hi Dan,

> +/* Dummy thread just to initialize an MTA for the benefit of custom action DLLs */
> +static HANDLE dummy_thread_event = NULL;
> +static HANDLE dummy_thread_handle = NULL;
> +
> +DWORD WINAPI dummy_thread_proc(void *arg)

It appears that calling CreateThread in DLL_PROCESS_ATTACH can cause
deadlocks:

 http://blogs.msdn.com/mgrier/archive/2005/06/21/431378.aspx

It might work if you move it to somewhere near ACTION_CallDllFunction,
and wait for the thread to start up, but this remains a hack of course.

Another blog explains that inheritance of an existing MTA is just a
side effect of starting the custom action in a different process, one
that happens to have initialized an MTA already.

 -Hans



More information about the wine-devel mailing list