Создаю поток в драйвере x64 и при использовании continue из __try/__finally получаю эксепшн STATUS_BAD_STACK,
под х86 все работает нормально. Самое интересное что драйвер состоящий только из этого кода вполне нормально работает,
проблема возникает только когда я такую конструкцию использую в составе здорового драйвера и только под х64.
Стэк в новом потоке вроде как должен быть вполне нормальный, на первый взгляд ничего косячного не замечаю.
Может кто подсказать в чем прикол?
каллстэк:
nt!RtlRaiseStatus
nt!RtlUnwindEx
nt!local_unwind
core!CoreThread
nt!SysThreadStartup
код:
InitializeObjectAttributes (&oa, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
PsCreateSystemThread (&hCore, GENERIC_ALL, &oa, NULL, NULL, CoreThread, NULL);
VOID CoreThread (PVOID pContext)
{
ULONG i, r;
for (i = 0;; i++)
{
__try
{
if (i < 2)
continue;
break;
}
__finally
{
r = 0;
}
}
}