Re: STATUS_BAD_STACK on continue
От: Аноним  
Дата: 12.01.13 08:39
Оценка: -2
Здравствуйте, Iskarov.And, Вы писали:

IA>Создаю поток в драйвере x64 и при использовании continue из __try/__finally получаю эксепшн STATUS_BAD_STACK,

IA>под х86 все работает нормально. Самое интересное что драйвер состоящий только из этого кода вполне нормально работает,
IA>проблема возникает только когда я такую конструкцию использую в составе здорового драйвера и только под х64.

IA>Стэк в новом потоке вроде как должен быть вполне нормальный, на первый взгляд ничего косячного не замечаю.

IA>Может кто подсказать в чем прикол?

IA>каллстэк:

IA>nt!RtlRaiseStatus
IA>nt!RtlUnwindEx
IA>nt!local_unwind
IA>core!CoreThread
IA>nt!SysThreadStartup

IA>код:



IA>
IA>InitializeObjectAttributes (&oa, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
IA>PsCreateSystemThread (&hCore, GENERIC_ALL, &oa, NULL, NULL, CoreThread, NULL);

IA>VOID CoreThread (PVOID pContext)
IA>{
IA>  ULONG    i, r;

IA>  for (i = 0;; i++)
IA>  {
IA>    __try
IA>    {
IA>      if (i < 2)
IA>        continue;
IA>      break;
IA>    }
IA>    __finally
IA>    {
IA>      r = 0;
IA>    }
IA>  }
IA>}
IA>


Что за говнокод?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.