CreateProcess и ошибка 1450
От: Bob Kotl Россия  
Дата: 02.10.15 13:17
Оценка:
Всем привет.

Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.

Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
Re: CreateProcess и ошибка 1450
От: ononim  
Дата: 02.10.15 13:59
Оценка: 7 (2)
BK>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.
BK>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
Во-первых в заголовке PE файла может быть проставлена опция swaprun from network, в результате чем винда будет целиком вычитывать содержимое файла в память прежде чем его запустить.
Во-вторых 30мб — это не тот объем чтоб часто вызывать такую проблему. Скорее всего просто фэйлится сетевая операция (ну малоли, шара отваливается ненадолго) и винда не особо парится чтобы выдать корректный код ошибки в этом случае.
В-третьих — антивирус мог добавить своих таракашек.
Как много веселых ребят, и все делают велосипед...
Re: CreateProcess и ошибка 1450
От: FoolS.Top Армения  
Дата: 02.10.15 16:51
Оценка:
Здравствуйте, Bob Kotl, Вы писали:

BK>Всем привет.


BK>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.


BK>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...


Может быть это поможет?
Feierlich, misterioso
Re[2]: CreateProcess и ошибка 1450
От: Bob Kotl Россия  
Дата: 04.10.15 13:58
Оценка:
Здравствуйте, ononim, Вы писали:

BK>>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.

BK>>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
O>Во-первых в заголовке PE файла может быть проставлена опция swaprun from network, в результате чем винда будет целиком вычитывать содержимое файла в память прежде чем его запустить.
Спасибо большое — дело было именно в этом. После убирания этого флага всё начало заводиться.
Re[3]: CreateProcess и ошибка 1450
От: ononim  
Дата: 04.10.15 23:34
Оценка:
BK>>>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.
BK>>>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
O>>Во-первых в заголовке PE файла может быть проставлена опция swaprun from network, в результате чем винда будет целиком вычитывать содержимое файла в память прежде чем его запустить.
BK>Спасибо большое — дело было именно в этом. После убирания этого флага всё начало заводиться.
Без этой опции будет работать стандартный механизм подгрузки страниц по мере необходимости. При этом если сетевая операция подчитывания страницы зафэйлится — возникнет исключение по типу access violation при исполнении страницы которая не смогла прочитаться.
Как много веселых ребят, и все делают велосипед...
Re[4]: CreateProcess и ошибка 1450
От: Bob Kotl Россия  
Дата: 05.10.15 04:04
Оценка:
Здравствуйте, ononim, Вы писали:

BK>>>>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.

BK>>>>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
O>>>Во-первых в заголовке PE файла может быть проставлена опция swaprun from network, в результате чем винда будет целиком вычитывать содержимое файла в память прежде чем его запустить.
BK>>Спасибо большое — дело было именно в этом. После убирания этого флага всё начало заводиться.
O>Без этой опции будет работать стандартный механизм подгрузки страниц по мере необходимости. При этом если сетевая операция подчитывания страницы зафэйлится — возникнет исключение по типу access violation при исполнении страницы которая не смогла прочитаться.
Ну он, наверное, и так работает — только страницы грузятся из своп-файла, а не из оригинального образа. И чисто теоретически, если диск, на котором расположен своп-файл, начинает сыпаться, то и здесь вылезет access violation...
Re[5]: CreateProcess и ошибка 1450
От: ononim  
Дата: 05.10.15 10:39
Оценка:
BK>>>>>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.
BK>>>>>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
O>>>>Во-первых в заголовке PE файла может быть проставлена опция swaprun from network, в результате чем винда будет целиком вычитывать содержимое файла в память прежде чем его запустить.
BK>>>Спасибо большое — дело было именно в этом. После убирания этого флага всё начало заводиться.
O>>Без этой опции будет работать стандартный механизм подгрузки страниц по мере необходимости. При этом если сетевая операция подчитывания страницы зафэйлится — возникнет исключение по типу access violation при исполнении страницы которая не смогла прочитаться.
BK>Ну он, наверное, и так работает — только страницы грузятся из своп-файла, а не из оригинального образа. И чисто теоретически, если диск, на котором расположен своп-файл, начинает сыпаться, то и здесь вылезет access violation...
Да, но с swaprun from network в случае рандомных сетевых проблем (вероятность которых много выше рандомных лисковых проблем) процесс просто не запуститься, т.к. не сможет вычитаться файл целиком, а без этой опции — крэшнется гденить в неожиданном виде в неожиданный момент, и всем придется долго чесать репу.
Как много веселых ребят, и все делают велосипед...
Re[4]: CreateProcess и ошибка 1450
От: rus blood Россия  
Дата: 05.10.15 11:29
Оценка:
Здравствуйте, ononim, Вы писали:

O>Без этой опции будет работать стандартный механизм подгрузки страниц по мере необходимости. При этом если сетевая операция подчитывания страницы зафэйлится — возникнет исключение по типу access violation при исполнении страницы которая не смогла прочитаться.


+1

EXCEPTION_IN_PAGE_ERROR
The thread tried to access a page that was not present, and the system was unable to load the page. For example, this exception might occur if a network connection is lost while running a program over the network.


В свое время поимел с этой проблемой порцию геморроя.
Особая прелесть этой ошибки в том, что если код обработчика исключения также находится в отсутствующей странице, то приложение просто вылетает, без всяких сообщений или записей в логи.
Вот приложение есть и работает — а вот его уже нет, и никаких следов.
Имею скафандр — готов путешествовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.