STATUS_BAD_STACK on continue
От: Iskarov.And  
Дата: 11.01.13 16:41
Оценка:
Создаю поток в драйвере 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;
    }
  }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.