информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСетевые кракеры и правда о деле ЛевинаЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Вот что я делаю 26.10.01 15:58  Число просмотров: 994
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
1) поставь внутри своей threadproc первым оператором return 0;
если глюк исчезнет - ищи его в threadproc

2) ты посмотрел что при ошибке видно в окошке CallStack ?
<programming>
[C++] Stack overflow 24.10.01 21:33  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Делаю прогу на VC
а тут сабж появляется, даже и не знаю что могло вызвать такой еррор
Что бы это???
Вот что я делаю 26.10.01 11:31  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Хочю создать поток функцией AfxBeginThread
При отладке вылетаю в Thrdcore.cpp в функцию UINT APIENTRY _AfxThreadEntry(void* pParam)
в код

// first -- check for simple worker thread
DWORD nResult = 0;
if (pThread->m_pfnThreadProc != NULL)
{
nResult = (*pThread->m_pfnThreadProc)(pThread->m_pThreadParams);
ASSERT_VALID(pThread);
}


Как только дохожу до ASSERT_VALID появляеца мессага об переполнении стека
Что это?
Вот что я делаю 26.10.01 15:58  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
1) поставь внутри своей threadproc первым оператором return 0;
если глюк исчезнет - ищи его в threadproc

2) ты посмотрел что при ошибке видно в окошке CallStack ?
Вот что я делаю 26.10.01 16:50  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
кароче я поставил в начале функции потока return 0;
Всё равно глючит,
в окне стека вот что:
$$$00001() line 79
KERNEL32! bff88ef7()
KERNEL32! bff86966()
KERNEL32! bff86863()

Регистры:
EAX = 002678BC
EBX = 00000008
ECX = 01621F98
EDX = 8175DB80
ESI = 8175DB20
EDI = 81761D14
EIP = 004534D7
ESP = 0181FF90
EBP = 0181FF98
EFL = 00010202
CS = 015F DS = 0167
ES = 0167 SS = 0167
FS = 445F GS = 0000
OV=0 UP=0 EI=1 PL=0
ZR=0 AC=0 PE=0 CY=0

01621F98 = 00000000

ST0 = +0.00000000000000000e+0000
ST1 = +0.00000000000000000e+0000
ST2 = +0.00000000000000000e+0000
ST3 = +0.00000000000000000e+0000
ST4 = +0.00000000000000000e+0000
ST5 = +0.00000000000000000e+0000
ST6 = +0.00000000000000000e+0000
ST7 = +0.00000000000000000e+0000
CTRL = 0000
STAT = 0000
TAGS = 0000
EIP = 00000000
CS = 0000 DS = 0000
EDO = 00000000

Мемори:
00000000 ?? ?? ?? ?? ?? ?? ??????
00000006 ?? ?? ?? ?? ?? ?? ??????
0000000C ?? ?? ?? ?? ?? ?? ??????
00000012 ?? ?? ?? ?? ?? ?? ??????
00000018 ?? ?? ?? ?? ?? ?? ??????
0000001E ?? ?? ?? ?? ?? ?? ??????
00000024 ?? ?? ?? ?? ?? ?? ??????
Вот что я делаю 26.10.01 17:35  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> кароче я поставил в начале функции потока return 0;
> Всё равно глючит,
> в окне стека вот что:
> $$$00001() line 79
> KERNEL32! bff88ef7()
> KERNEL32! bff86966()
> KERNEL32! bff86863()

теперь хоть понятно, что это не зацикливание рекурсивных вызовов

1) а как у тебя threadproc объявлена ?

2) и как ты создаёшь thread ?
Вот что я делаю 26.10.01 18:03  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
кароче сначала я создаю поток, делаю некоторые действия,
при успешном выполнении действий, шлю мессагу - SendMessage функция которой запускает новый поток,
потоки создаю так:
HANDLE h;
DWORD dw;

if(h)
CloseHandle(h);
h = CreateThread(NULL, 0, thread, NULL, &dw);

сама функция потока:
DWORD WINAPI thread(void *Param)
{
return 0;
}
Вот что я делаю 26.10.01 21:50  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
если ты используешь MFC то и поток должен создавать через AfxBeginThread
Для начала стек увеличить. Тогда будет ясно 26.10.01 11:14  
Автор: ukv Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В VC это вроде делается через Project Settings->Link->Output->Stack allocations

Размер по умолчанию 1 Мб, если подсказка не врет. Если при увеличении скажем до 2 Мб переполнение останется, то это скорее всего где-то бесконечная рекурсия. Если переполнение пропадет, то в программе просто избыток локальных переменных.
[C++] Stack overflow 25.10.01 01:27  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> Делаю прогу на VC
> а тут сабж появляется, даже и не знаю что могло вызвать
> такой еррор
> Что бы это???

у тебя глюк в проге
например зацикливание рекурсивных вызовов

когда эта ошибка произойдёт обрати внимание на окошо дебагера, где показаны вызовы функций (Call stack)
[C++] Stack overflow 24.10.01 21:52  
Автор: SEH Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А оно когда появляется, когда пишешь прогу, или когда ее запускаешь?
[C++] Stack overflow 24.10.01 22:32  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
када отлаживаю, в определённх участках кода
[C++] Stack overflow 26.10.01 00:21  
Автор: SEH Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Наверное, потому что, у тебя там бесконечная рекурсия(функция вызывает сама себя), может не напрямую, косвенно. Обычно именно из-за этого. ты ведь на с++ пишешь?
[C++] Stack overflow 26.10.01 01:51  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
A eche
1.mozhet byt` kogda ty vnutri funkcii ty declariruesh bolshoe kol-vo stack variables (local ili automatic)
2. C startup ne smoglo inicializirovat` stack space.

Mozhesh izmenit stack size :
1.v compilere /F
2.v linkere /STACK:
3.v .DEF file STACKSIZE
4.ispolzua util EDITBIN na gotovoom EXE
no esli ty uvelichish stack slishkom mnogo to to ne smozhet allocirovat` stack
[C++] Stack overflow 26.10.01 09:46  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> 1.mozhet byt` kogda ty vnutri funkcii ty declariruesh
> bolshoe kol-vo stack variables (local ili automatic)

В смысле??
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach