Такой вопрос - есть компьютер (восстановлен из образа акронисом). Win7 32-бит SP1. После того, как заказчик накатил на него секьюрити патчи (требуемые полиси компании) десктопное приложение стало спонтанно выбрасывать ERROR_NOT_ENOUGH_MEMORY при чтении и записи файлов. Может проработать десять дней без сбоев а может выбросить десять сбоев в день. Промышленная система работает 24х7, так что это дело довольно критично. Расход памяти - первое что проверили, там всё хорошо. Причём OutOfMemory можно время от времени словить, даже просто копируя небольшие файлы в эксплорере.
Учебник пишет вот что:
The
WriteFile function may fail with ERROR_INVALID_USER_BUFFER or
ERROR_NOT_ENOUGH_MEMORY whenever there are too many outstanding asynchronous I/O requests.
Я сильно грешу на Symantec Endpoint Protection и Acronis.
Образ есть у меня в руках и там проблема воспроизводится простенькой тестовой программкой, которая просто пишет и читает файлы через fwrite и fread.
Мы, конечно, переставим всё с нуля и скорее всего оно взлетит, но я хочу разобраться, ибо дотошный я. Семёрку 32 бита менять нельзя - там железка хитрая и драйвер только для этой ОС есть. Почитал
Руссиновича, пробежался по процессам
Process Explorer и никаких аномалий не увидел. Меня сильно смущает "too many outstanding asynchronous I/O requests". Нигде нет никакой информации "too many" - это вообще сколько и каким счётчиком я могу это дело посмотреть?