Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=906512&src=alt&showlite=
Дата изменения: Unknown
Дата индексирования: Mon Apr 11 23:44:37 2016
Кодировка: Windows-1251
execve - ENOMEM - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Alt >> Hard&Soft.Linux

Страницы: 1
maratrus
old hand

Рег.: 06.01.2007
Сообщений: 781
Рейтинг: 331
  execve - ENOMEM
      29.12.2009 01:06
1

Прошу подкинуть идей по решению следующей проблемы.

Есть проект (я не являюсь автором, взял как есть) - ~40 файлов на фортране.
Получившиеся после компиляции объектные файлы линкуются вместе с парой
статических библиотек (ar архивы), которые также тянутся вместе с проектом.
В результате получается довольно большой исполняемый файл start.

code:
# du -sh start 809K start # file start start: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), for GNU/Linux 2.6.0, not stripped


Однако, исполнение этого файла заканчивается смертью процесса
 
code:
# ./start Killed


strace показал, что не могу сделать exec

code:
# strace -fF ./start execve("./start", ["./start"], [/* 35 vars */]) = -1 ENOMEM (Cannot allocate memory) +++ killed by SIGKILL +++ Process 7314 detached


Информация по памяти и лимитам
 
code:
# cat /proc/meminfo MemTotal: 482336 kB MemFree: 50384 kB Buffers: 39648 kB Cached: 231264 kB SwapCached: 20808 kB Active: 315404 kB Inactive: 83116 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 482336 kB LowFree: 50384 kB SwapTotal: 369484 kB SwapFree: 312976 kB Dirty: 12 kB Writeback: 0 kB Mapped: 181516 kB Slab: 17836 kB CommitLimit: 610652 kB Committed_AS: 328876 kB PageTables: 2024 kB VmallocTotal: 540664 kB VmallocUsed: 7484 kB VmallocChunk: 532468 kB # ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited max nice (-e) 20 file size (blocks, -f) unlimited pending signals (-i) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) unlimited max rt priority (-r) unlimited stack size (kbytes, -s) unlimited cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited


В dmesg и логах тишина полная - нет абсолютно ничего.

Дополнительно, информация по системе и компилятору

code:
# uname -a Linux anna 2.6.17-11-generic #2 SMP Thu Feb 1 19:52:28 UTC 2007 i686 GNU/Linux # cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=6.10 DISTRIB_CODENAME=edgy DISTRIB_DESCRIPTION="Ubuntu 6.10" # dpkg -S /usr/bin/gfortran gfortran-4.0: /usr/bin/gfortran-4.0


Буду благодарен за любую помощь как траблшутить такую ситуацию и что можно подкрутить.

P.S. Пробывал на 2.6.26.1 ядре. Ситуация аналогичная



green

Рег.: 28.11.2002
Сообщений: 20916
Из: MSU
Рейтинг: 5080
  Re: execve - ENOMEM [re: maratrus]
      29.12.2009 01:39
 

Может у него есть сегменты неинициализированные, но которые оно требует аллоцировать при запуске? Не знаю, можно ли в ELF такое делать, но когда ассемблер изучали, то в exe такое вроде было.
Попробуй там другие утилиты на бинарник натравить. nm или чего-то там из этой серии.

monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: execve - ENOMEM [re: green]
      29.12.2009 01:59
 

readelf



#
maratrus
old hand

Рег.: 06.01.2007
Сообщений: 781
Рейтинг: 331
  Re: execve - ENOMEM [re: monoid]
      29.12.2009 10:19
 

Спасибо за readelf.
Мне также удалось достать вывод readelf, натравленный на исходник того же проекта, но на машине, на которой все работает.
Поэтому я могу выложить для сравнения readelf с моего компьютера и с работающего, только я что-то не понял, как текстовые файлы нормально прикреплять к сообщению (~1600 строк каждый). В FAQ написано, что этого делать нельзя.

monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: execve - ENOMEM [re: maratrus]
      29.12.2009 10:30
1

файлы в .zip, .zip в аплоад, яйцо в зайца ну и далее по тексту



#
maratrus
old hand

Рег.: 06.01.2007
Сообщений: 781
Рейтинг: 331
  Re: execve - ENOMEM [re: monoid]
      29.12.2009 10:48
 

Между делом попробовал другой компилятор, выбор пал на g95
http://g95.org/
Взял отсюда
http://g95.org/downloads.shtml
компилятор
С ним программа заработала, поэтому я привел вывод для трех файлов
"readelf -a". Названия файлов имеют вид: "имяпрограммы_компилятор.архитектура"
архив

monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: execve - ENOMEM [re: maratrus]
      29.12.2009 11:15
1

Там .bss (секция данных, которые инициализируются в 0 при старте) на 0x343f0288 = 876544648 байт, у тебя оперативка + своп в сумме меньше. Сомневаюсь, что даже подкручивание overcommit (man proc) может помочь. На машине ppc, видимо, было больше памяти. А хитрый g95 делает .bss меньше.



#
maratrus
old hand

Рег.: 06.01.2007
Сообщений: 781
Рейтинг: 331
  Re: execve - ENOMEM [re: monoid]
      29.12.2009 12:16
 

Похоже на правду, спасибо большое.

monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: execve - ENOMEM [re: maratrus]
      29.12.2009 12:27
 

А попробуй все-таки подкрутить overcommit



#
maratrus
old hand

Рег.: 06.01.2007
Сообщений: 781
Рейтинг: 331
  Re: execve - ENOMEM [re: monoid]
      29.12.2009 12:41
 

code:
# cat /proc/sys/vm/overcommit_memory 0 # ./start Killed # echo 1 > /proc/sys/vm/overcommit_memory #./start Fortran runtime error: Success


monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: execve - ENOMEM [re: maratrus]
      29.12.2009 17:04
2

Quote:

Fortran runtime error: Success



Типа, очевидные аналогии с классическими виндовыми ляпами уже никому не интересны?




#
Страницы: 1

Alt >> Hard&Soft.Linux

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  YOжиk, botWi, bmv 
Владельцы: YOжиk

Печать темы

Права
      Вы не можете создавать новые темы
      Вы не можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в