Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
1

Sleep(1000) иногда крашит программу у одного юзера

14.07.2012, 01:43. Показов 1869. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Из треда идет вызов Sleep(1000) и проверка глобальной переменной

C++
1
2
3
Sleep(1000);
if(!has_thread)
{ ...
windbg пишет:

стэк:
0421febc 7c90d21a 7c8023f1 00000000 0421fef0 ntdll!KiFastSystemCallRet
0421fec0 7c8023f1 00000000 0421fef0 10005bb8 ntdll!NtDelayExecution+0xc
0421ff18 7c802455 000003e8 00000000 0421ff74 kernel32!SleepEx+0x61
0421ff28 100013ba 000003e8 0000027f 00000000 kernel32!Sleep+0xf
0421ff74 785432a3 00000000 113115bf 10005bb8 MyProgram_10000000!my_thread_func+0x36 [N:\MyProgram\MyProgram.cpp @ 298]
0421ffac 7854332b 0421ffec 7c80b729 00c05308 msvcr90!_callthreadstart+0x1b [f:\dd\vctools\crt_bld\self_x86\crt\src\thread.c @ 293]
0421ffb4 7c80b729 00c05308 10005bb8 00c02d50 msvcr90!_threadstart+0x5d [f:\dd\vctools\crt_bld\self_x86\crt\src\thread.c @ 275]
0421ffec 00000000 785432ce 00c05308 00000000 kernel32!BaseThreadStart+0x37
Место проблемы:
FOLLOWUP_IP:
MyProgram_10000000!my_thread_func+36 [N:\MyProgram\MyProgram.cpp @ 298]
100013ba 0fb605ac7f0010 movzx eax,byte ptr [MyProgram_10000000!has_thread (10007fac)]
FAULTING_SOURCE_CODE:
296: {
297: Sleep(1000);
> 298: if(!has_thread)
По мелочи
eax=000000c0 ebx=00000000 ecx=e977a323 edx=00000000 esi=00000000 edi=0421fef0
eip=7c90e514 esp=0421fec0 ebp=0421ff18 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
ntdll!KiFastSystemCallRet:
7c90e514 c3 ret


FAULTING_IP:
+152952f008edf74
00000000 ?? ???

EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD: 00000e40

DEFAULT_BUCKET_ID: STATUS_BREAKPOINT

PROCESS_NAME: MyProgram.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - <Unable to get error code text>

NTGLOBALFLAG: 0

APPLICATION_VERIFIER_FLAGS: 0

PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT

BUGCHECK_STR: APPLICATION_FAULT_STATUS_BREAKPOINT

LAST_CONTROL_TRANSFER: from 7c90d21a to 7c90e514

> .ecxr
Minidump doesn't have an exception context
Unable to get exception context, HRESULT 0x80004002

0:000> !dumpstack -EE
No export dumpstack found
0:000> r
eax=000000c0 ebx=00000000 ecx=e977a323 edx=00000000 esi=00000000 edi=0421fef0
eip=7c90e514 esp=0421fec0 ebp=0421ff18 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
ntdll!KiFastSystemCallRet:
7c90e514 c3 ret
0:000> !address eip
7c900000 : 7c901000 - 0007d000
Type 01000000 MEM_IMAGE
Protect 00000020 PAGE_EXECUTE_READ
State 00001000 MEM_COMMIT
Usage RegionUsageImage
FullPath C:\WINDOWS\system32\ntdll.dll
0:000> ub eip
ntdll!KiRaiseUserExceptionDispatcher+0x38:
7c90e500 0424 add al,24h
7c90e502 8be5 mov esp,ebp
7c90e504 5d pop ebp
7c90e505 c3 ret
7c90e506 8da42400000000 lea esp,[esp]
7c90e50d 8d4900 lea ecx,[ecx]
ntdll!KiFastSystemCall:
7c90e510 8bd4 mov edx,esp
7c90e512 0f34 sysenter
Ума не приложу что такое и как исправлять, будут идеи? Это может быть из-за того что и программа и тред одновременно обращаются (пишут в неё\читают) к переменной?
гуглил похожие дампы - пишут что проблемы глубоко зарыта, но ничего конкретного =\
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2012, 01:43
Ответы с готовыми решениями:

Sleep(1000): Как сделать паузу и в тоже время иметь контроль над формой?
Как в Delphi сделать паузу и в тоже время иметь контроль над программой? Допустим, я ставлю в...

Почему крашит программу
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;string.h&gt; #define...

Изменение значения по указателю крашит программу
пытаюсь поменять значение по указателю, указывающему на область, где загружена kernel32.dll. Прога...

CreateRemoteTherad в инжекторе крашит целевую программу
Здравствуйте, столкнулся с проблемой в написании инжектора DLL файлов. Проблема заключается в том,...

4
167 / 107 / 22
Регистрация: 02.01.2012
Сообщений: 596
14.07.2012, 02:12 2
Кто-то память потер изрядно, пока задача в ожидании стояла..
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.07.2012, 08:52 3
Какого типа has_thread? Если встроенный тип (BOOL, например), то на этой проверке упасть не может в принципе, т.к. в худшем случае там мусор. Значит падает на возврате из функции Sleep, значит попорчен стек.
0
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
14.07.2012, 11:16  [ТС] 4
has_thread типа BOOL, ктож и как память то потёр?
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.07.2012, 11:20 5
Проверяй выход за границы массивов и использование не инициализированных указателей. И удалённых объектов.
0
14.07.2012, 11:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2012, 11:20
Помогаю со студенческими работами здесь

Не пускает только одного юзера по RDP
Такая ошибка выскакивает после ввода (логина \пароля) &quot;Чтобы выполнить вход на этот удаленный...

Крашит программу примерно при вызове функции free()
Всё заполняется без ошибок, как и выводит, но примерно на освобождении памяти просто крашит...

Функция в dll, которая инжектится в чужой процесс, крашит программу
Здравствуйте, сражу скажу, программу я пишу в целях собственного развития, вирус писать я не...

Существует ли программа которая скопировала бы юзера с одного компа и вставила его в другой?!
В общем для ОС Windows XP и Windwos 7 Нужна программа которая экспортировала созданную учётную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru