Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Зависает система во время счета  (Прочитано 1237 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн valentin630

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 275
    • Просмотр профиля
Стал зависать комп во время работы моей программы. Через полчаса-час после
начала выполнения перестают работать мышь и клавиатура. Войти по ssh c другого компа не получается тоже.
Если грешить, то на что?
Вот syslog примерно во время зависания:
Jun 15 14:15:14 vak kernel: [ 3058.322846] [UFW BLOCK] IN=enp8s0 OUT= MAC=01:00:5e:00:00:01:f0:b4:29:22:79:94:08:00 SRC=10.0.2.4 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2
Jun 15 14:16:01 vak CRON[6089]: (root) CMD (sleep 5 && /usr/bin/wget "http://kuzmin.com.ru/cgi-bin/vak.kuzmin.com.ru" --timeout=5 --no-dns-cache -o /dev/null -O /dev/null)
Jun 15 14:17:10 vak CRON[6117]: (root) CMD (sleep 5 && /usr/bin/wget "http://kuzmin.com.ru/cgi-bin/vak.kuzmin.com.ru" --timeout=5 --no-dns-cache -o /dev/null -O /dev/null)
Jun 15 14:17:10 vak CRON[6118]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 15 14:17:19 vak kernel: [ 3183.770336] [UFW BLOCK] IN=enp8s0 OUT= MAC=01:00:5e:00:00:01:f0:b4:29:22:79:94:08:00 SRC=10.0.2.4 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2
Jun 15 14:18:08 vak CRON[6130]: (root) CMD (sleep 5 && /usr/bin/wget "http://kuzmin.com.ru/cgi-bin/vak.kuzmin.com.ru" --timeout=5 --no-dns-cache -o /dev/null -O /dev/null)
Jun 15 14:19:25 vak kernel: [ 3309.217777] [UFW BLOCK] IN=enp8s0 OUT= MAC=01:00:5e:00:00:01:f0:b4:29:22:79:94:08:00 SRC=10.0.2.4 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2
Jun 15 14:21:30 vak kernel: [ 3434.665244] [UFW BLOCK] IN=enp8s0 OUT= MAC=01:00:5e:00:00:01:f0:b4:29:22:79:94:08:00 SRC=10.0.2.4 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2
Jun 15 14:22:19 vak systemd[1]: snapd.service: Watchdog timeout (limit 5min)!
Jun 15 14:22:57 vak kernel: [ 3521.531784] usb 4-1: USB disconnect, device number 2
Jun 15 14:23:01 vak kernel: [ 3521.532202] sd 12:0:0:0: [sda] Synchronizing SCSI cache
Jun 15 14:23:02 vak kernel: [ 3521.651675] sd 12:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
Jun 15 14:23:57 vak rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="1241" x-info="http://www.rsyslog.com"] start
Jun 15 14:23:57 vak rsyslogd-2222: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http://www.rsyslog.com/e/2222 ]
Jun 15 14:23:57 vak rsyslogd: rsyslogd's groupid changed to 108
Jun 15 14:23:57 vak rsyslogd: rsyslogd's userid changed to 104
Jun 15 14:23:57 vak systemd-modules-load[308]: Inserted module 'ashmem_linux'
Jun 15 14:23:57 vak systemd-modules-load[308]: Inserted module 'binder_linux'
Jun 15 14:23:57 vak systemd-modules-load[308]: Inserted module 'lp'
Jun 15 14:23:57 vak systemd-modules-load[308]: Inserted module 'ppdev'
Jun 15 14:23:57 vak systemd-modules-load[308]: Inserted module 'parport_pc'
Jun 15 14:23:57 vak systemd-modules-load[308]: Failed to find module 'it87 force_id=0x8728'
Jun 15 14:23:57 vak loadkeys[332]: Loading /etc/console-setup/cached.kmap.gz
Jun 15 14:23:57 vak systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
Jun 15 14:23:57 vak rsyslogd-2039: Could not open output pipe '/dev/xconsole':: No such file or directory [v8.16.0 try http://www.rsyslog.com/e/2039 ]
Jun 15 14:23:57 vak systemd[1]: Failed to start Load Kernel Modules.
Jun 15 14:23:57 vak systemd[1]: systemd-modules-load.service: Unit entered failed state.
Jun 15 14:23:57 vak systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
Jun 15 14:23:57 vak rsyslogd-2007: action 'action 10' suspended, next retry is Mon Jun 15 14:24:27 2020 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
Jun 15 14:23:57 vak systemd[1]: Started Set console keymap.
Lubuntu 20.04.

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Зависает система во время счета
« Ответ #1 : 15 Июня 2020, 14:55:40 »
Если грешить, то на что?
На оперативку к примеру. Может быть вся использована и надало свапиться.
Я в личке не консультирую. Вопросы задавайте на форуме.

Dzhoser

  • Гость
Re: Зависает система во время счета
« Ответ #2 : 15 Июня 2020, 15:12:16 »
Jun 15 14:22:57 vak kernel: [ 3521.531784] usb 4-1: USB disconnect, device number 2
Jun 15 14:23:01 vak kernel: [ 3521.532202] sd 12:0:0:0: [sda] Synchronizing SCSI cache
Jun 15 14:23:02 vak kernel: [ 3521.651675] sd 12:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
Да не у valentin630, просто отвалился жёсткий или флешка с которой он запустил программу.

Оффлайн valentin630

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 275
    • Просмотр профиля
Re: Зависает система во время счета
« Ответ #3 : 15 Июня 2020, 18:26:30 »
просто отвалился жёсткий или флешка
Все работает, "птичий язык" логфайла понимает толька та особь, которая и писала
сей кусок системы.
Скорее всего "шестой" прав: С++ поганый язык в смысле "утечки памяти". Свое еще можно отловить, а уж как "чужой" код себе память выделяет - это потемки. Помониторил память - она растет. Какой командой запускать код с ограничением по памяти не знаю пока.
Lubuntu 20.04.

Dzhoser

  • Гость
Re: Зависает система во время счета
« Ответ #4 : 15 Июня 2020, 18:38:55 »
ps -aux в помощь

Оффлайн soarin

  • Старожил
  • *
  • Сообщений: 1850
  • ubuntu 20.04
    • Просмотр профиля
Re: Зависает система во время счета
« Ответ #5 : 15 Июня 2020, 18:56:34 »
Какой командой запускать код с ограничением по памяти не знаю пока.
Ну это тольлько прибивать процесс, как дойдёт до лимита.
Если результаты сохранились подсчёта, то снова запускать для продолжения счёта.

https://askubuntu.com/questions/510913/how-to-set-a-memory-limit-for-a-specific-process
« Последнее редактирование: 15 Июня 2020, 19:01:35 от soarin »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5590
  • Все по палатам!
    • Просмотр профиля
Re: Зависает система во время счета
« Ответ #6 : 15 Июня 2020, 19:04:02 »
Писать грамотно. И следить за памятью. Когда-то и 56кб хватало.
Извините, я все еще учусь

Оффлайн valentin630

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 275
    • Просмотр профиля
Lubuntu 20.04.

Dzhoser

  • Гость
Re: Зависает система во время счета
« Ответ #8 : 15 Июня 2020, 23:42:48 »
ps -aux Это для определения какое приложение ест память
В Linux существует утилита valgrind. Чтобы установить valgrind, необходимо в консоли прописать sudo apt install valgrin
Пример программы  которая заполняет динамический массив, но при этом, не очищается память

main.c

Цитировать
#include <stdlib.h>
#include <stdio.h>
#define N 10

int main()
{
    int * mas = (int *)malloc(N * sizeof(int));
    for(int i = 0; i < N; i++)
    {
        *(mas+i) = i;
        printf("%d\t", *(mas+i));
    }
    printf("\n");
    return 0;
}

Скомпилировав программу с помощью CLang, мы получаем .out файл, который мы подкидываем valgrind'у.

С помощью команды valgrind ./a.out
Как работает valgrind, думаю, есть смысл погуглить, а сейчас опишу, как выполнится программа, valgrind выведет это:
(Нажмите, чтобы показать/скрыть)
Таким образом, valgrind пока показывает, сколько памяти было потеряно. Чтобы увидеть, где была выделена память, необходимо прописать --leak-check=full, и тогда, valgrind, помимо выше описанного, выведет это:
(Нажмите, чтобы показать/скрыть)
Конечно, тут не указана строка, однако уже указана функция, что не может не радовать.

Есть альтернативы valgrind’у, такие как strace или Dr.Memory, но я ими не пользовался, да и они применяется в основном там, где valgrind бессилен.
Удачи в отлове утечки.
« Последнее редактирование: 15 Июня 2020, 23:47:09 от Dzhoser »

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Re: Зависает система во время счета
« Ответ #9 : 15 Июня 2020, 23:57:22 »
Какой командой запускать код с ограничением по памяти не знаю пока
cgroups как временное решение?
А вообще нужно дергать за уши программиста, допустившего утечки памяти в программе, ну или самому отладить, если проект опенсорсный.

 

Страница сгенерирована за 0.053 секунд. Запросов: 25.