Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.61.16] |
|
Сообщ.
#1
,
|
|
|
Пишу многопоточное приложение (прокси-сервер). В процессе его работы возникают конфликты доступа либо при обращении к блоку памяти, выделенному динамически, либо при вызове процедур выдленения памяти. При этом невозможно определить условия возникновения исключений - может спокойно работать три дня, обслуживая сеть из ~100 машин, либо слететь через 5 минут после запуска при одном только клиенте. Ни выбор функций распределения динамической памяти new/delete, malloc/free,
LocalAlloc/LocalFree, GlobalAlloc/GlobalFree, HeapAlloc/HeapFree, ни выбор среды программирования проблемы не решают. Может кто-нибудь сталкивался с подобной проблемой и знает пути её решения. |
Сообщ.
#2
,
|
|
|
писал свой прокс .... у меня слетал по началу (код 5) из-за того что несколько потоков пытались править одну и ту-же структуру ..... если функции *Alloc/*Free не возвращают ошибок, то помотри .... может тоже что-то подобное ...
|
Сообщ.
#3
,
|
|
|
Доступ ко всем ресурсам, разделяемым между потоками происходит в критических секциях, а ошибка проявляется даже для тех блоков, которые видимы только одному потоку, их выделившему...
|
Сообщ.
#4
,
|
|
|
Странно, А функции Alloc/Free ошибок не возвращают?
переполнений нет? это нада посмотреть |
Сообщ.
#5
,
|
|
|
Я бы начал с просмотра вылеза записей за пределы выделенных блоков. ИМХО 90\% ошибок с памятью связана именно с этим. :)
|
Сообщ.
#6
,
|
|
|
Вопрос не в том как бороться с этими ошибками, а в том, почему они могут возникнуть, а могут и не возникнуть при одинаковых видимых условиях. Выход за границы блока не возможен, поскльку память всегда выделяется с большим запасом.
|
Сообщ.
#7
,
|
|
|
Может покажется не по теме но скажи на чём у тебя прокся стоит: какой комп и какая ось?
Просто было у меня дерьмо такое ось NT2000 на старом P200 MX и всё время пятая ошибка вылетала пока BIOS не перепрошил. |
Сообщ.
#8
,
|
|
|
P-IV 1400 Win2K - слетает
P-133 WinNT 4.0 - слетает |