¿Cómo depuro un bloqueo de descarga de un paquete designado que involucra un bloqueo en ThreadProc en Classes.pas?

No estoy seguro de cómo localizar el siguiente bloqueo:

Sucede cuando descargo un paquete de Designtime que se usa internamente en mi empresa. Es nuestro código, por lo tanto, es nuestro error corregir, no un problema de un proveedor de componentes de terceros.

Parece que hay un subproceso involucrado, pero como sucede en la función ThreadProc en Classes.pas, supongo que es un subproceso de sistema / RTL sin siquiera un contenedor de clase TThread que debería estar buscando en nuestro código. (Pregunta Parte A: ¿Es así?)

La pila de llamadas no contiene ninguno de mi código, solo el IDE en sí, y la función base en la pila de llamadas es ntdll.RtlInitializeExceptionChain.

call stack ejemplo de una infracción de acceso en algún método TThread.Ejecute que muestra que el depurador no proporciona detalles sobre QUÉ thread está involucrado:

 :7599b9bc KERNELBASE.RaiseException + 0x58
 :516b4965 ; c:\program files (x86)\embarcadero\rad studio\8.0\bin\exceptiondiag150.bpl
 :5003b058 NotifyNonDelphiException + $1C
 :77be6a8b ; ntdll.dll
 :77bb0143 ntdll.KiUserExceptionDispatcher + 0xf
 rtl.Classes.ThreadProc($CB9ED70)
rtl.System.ThreadWrapper($403E910)
:75fb339a kernel32.BaseThreadInitThunk + 0x12
:77bd9ed2 ntdll.RtlInitializeExceptionChain + 0x63
:77bd9ea5 ntdll.RtlInitializeExceptionChain + 0x36

Cuando intento ver la información del hilo, el segundo IDE de Delphi que es mi ejecutable de destino se bloquea, pero puedo continuar viendo la información en mi instancia de host de depuración de Delphi.

Conozco técnicas para depurar paquetes de tiempo de diseño y estoy usando dichas técnicas. Es decir, tengo una primera copia de delphi (BDS.exe) lanzando una segunda copia, porque el proyecto del paquete, ha establecido en sus Parámetros de ejecución, en el cuadro de edición de la Aplicación de host, el bds.exe principal para Delphi XE. C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\bds.exe). Por lo tanto, cuando ejecuto mi paquete en modo de depuración, se carga en el IDE de Delphi.

La parte B de la pregunta es: ¿Cuál es el mejor lugar para establecer un punto de interrupción para que pueda ver los hilos que no son TThread, así como los hilos basados en TThread que se crean? Si no hay forma de establecer un punto de interrupción, ¿qué tal un medio alternativo para encontrar qué código está creando hilos?

Update: descubrí que establecer un punto de interrupción en la línea que lee Thread.Execute, en la función ThreadProc, en Classes.pas, me da un punto de interrupción en cada inicio de TThread. Eso es suficiente para encontrar hilos iniciados por un paquete designtime o runtime desde su sección de inicialización, pero espero que exista una forma de nivel aún más bajo para hacer esto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta