Wpis z mikrobloga

@aka_wannabe: Mirki z #linux #debian #ubuntu
Mam źródła programu napisanego w C próbując skompilować je na debianie 8.11 tworzy się plik wyjściowy o nazwie którą podałem ale kiedy chce włączyć program to po chwili pokazuje się tylko napis "killed" i to wszystko. Dzięki sugestiom mirka @glonstar uruchomiłem skompilowany program w dbg. Debuger wyświetlił taki komunikat

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program terminated with signal SIGKILL, Killed.
The program no longer exists.

Dodam tylko że na Ubuntu buster/sid i stretch/sid program kompiluje się i działa bez najmniejszych problemów.
Czy ktoś mógłby mi pomóc?
  • 14
@BoKoR: file format elf64-x86-64

Program Header:
LOAD off 0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 221
filesz 0x00000000000dce7b memsz 0x00000000000dce7b flags r-x
LOAD off 0x00000000000dd000 vaddr 0x00000000006dd000 paddr 0x00000000006dd000 align 2
21
filesz 0x0000000000001e30 memsz 0x00000000000086a8 flags rw-
NOTE off 0x0000000000000158 vaddr 0x0000000000400158 paddr 0x0000000000400158 align 22
filesz 0x0000000000000044 memsz 0x0000000000000044 flags r--
TLS off 0x00000000000dd000 vaddr 0x00000000006dd000 paddr 0x00000000006dd000 align 2
3
filesz 0x0000000000000030 memsz 0x0000000000000060 flags r--
STACK
@BoKoR: execve("./loader", ["./loader"], [/* 15 vars */]) = 0
uname({sys="Linux", node="cockbox", ...}) = 0
brk(0) = 0x13b5000
brk(0x13b61c0) = 0x13b61c0
archprctl(ARCHSETFS, 0x13b5880) = 0
set
tidaddress(0x13b5b50) = 5535
set
robustlist(0x13b5b60, 24) = 0
rt
sigaction(SIGRTMIN, {0x4092c0, [], SARESTORER|SASIGINFO, 0x409910}, NULL, 8) = 0
rtsigaction(SIGRT1, {0x409350, [], SARESTORER|SARESTART|SASIGINFO, 0x409910}, NULL, 8) = 0
rt
sigprocmask(SIGUNBLOCK, [RTMIN RT1], NULL,
@aka_wannabe:
No i tutaj już moja wiedza z tym co się wysypuje się kończy.

Wygląda (mmap(NULL, 1048576, PROTREAD|PROTWRITE, MAPPRIVATE|MAPANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) ) na to że nie może zaalokowac pamięci.

Ile masz ramu na Debianie i na drugim kompie gdzie to testowałeś?

Uruchom program jeszcze raz, a po nim podaj wynik polecenia:

journalctl | tail -n 40
Odpal jeszcze jakiś monitor systemu, gdzie będziesz miał wykres
journalctl | tail -n 40


@BoKoR: Aug 15 17:11:45 cockbox kernel: CPU 0: hi: 186, btch: 31 usd: 149
Aug 15 17:11:45 cockbox kernel: activeanon:232839 inactiveanon:1055 isolatedanon:0
active
file:9 inactivefile:0 isolatedfile:9
unevictable:0 dirty:0 writeback:0 unstable:0
free:12231 slabreclaimable:1564 slabunreclaimable:1791
mapped:221 shmem:1087 pagetables:779 bounce:0
freecma:0
Aug 15 17:11:45 cockbox kernel: Node 0 DMA free:4600kB min:704kB low:880kB high:1056kB active
anon:11008kB inactiveanon:4kB activefile:0kB inactivefile:0kB
@BoKoR: no dobra, jednak pomyłka druga maszyna ba ubuntu ma 4gb ramu, teraz uruchomiłem kolejnego vps na debianie 9 z 4gb ramu i ruszyło, czyli wygląda na to że problemem jest niewystarczająca ilość ramu na maszynie z debianem 8
Wieeeeelkie dzięki Mireczku za pomoc, od wczoraj szukałem rozwiązania tego problemu i nie dawało mi to spokoju.
@BoKoR: Chociaż zastanawia mnie fakt że podczas kompilowania na wszystkich maszynach pojawiają się warning
a na tej z debianem 8 nie. Myślisz że wynika to z zapotrzebowania na ram kompilatora?
@aka_wannabe: Tutaj bardziej musiałby wypowiedzieć się ktoś kto lepiej się na tym zna.
Moim zdaniem wszystko zależy od tego jakie to ostrzeżenia. No i z jakimi flagami jest kompilowany kod (-Wall).

Myślisz że wynika to z zapotrzebowania na ram kompilatora?

Wydaje mi się że kompilator ma głęboko informację o tym ile masz ramu. On miał skompilować program i skompilował. To że aplikacja wymaga więcej ramu niż posiadasz to już twój problem