Почему происходит сбой приложения при вызове `call_pv()`?
Мы вызываем подпрограмму process_input
с call_pv
и это вызывается из кода процесса, который обрабатывает ввод текста размером до 1 МБ. Процесс делает следующее:
- он ест почту от любого почтового клиента
- создает новый тикет в приложении
- и отвечает обратно, если размер почты> 1 МБ
Недавно я отправил файл размером около 800 КБ, который вызывает постоянный сбой процесса, доходящий до 2 ГБ, и сбой. Вот звонок:
Call_pv("process_input",G_EVAL|G_ARRAY);
Любые идеи будут полезны. Есть ли альтернатива call_pv
?
Дополнительные сведения: текст, который был отправлен в электронном письме, содержит акцентированные символы.
1 ответ
Процессы умирают, потому что не хватило памяти. 32-разрядный процесс имеет 4 ГБ адресного пространства, но только 2 ГБ из этого могут использоваться приложением в Windows (и IIRC, 3 ГБ в Linux).