Coredump усекается - PullRequest
       6

Coredump усекается

14 голосов
/ 07 января 2012

Я устанавливаю

ulimit -c unlimited. 

И в программе на c ++ мы делаем

struct rlimit corelimit;
  if (getrlimit(RLIMIT_CORE, &corelimit) != 0) {
    return -1;
  }
  corelimit.rlim_cur = RLIM_INFINITY;
  corelimit.rlim_max = RLIM_INFINITY;
  if (setrlimit(RLIMIT_CORE, &corelimit) != 0) {
    return -1;
  }

, но всякий раз, когда программа падает, генерируемый ей дамп ядра усекается.

BFD: Warning: /mnt/coredump/core.6685.1325912972 is truncated: expected core file size >= 1136525312, found: 638976.

В чем может быть проблема?

Мы используем Ubuntu 10.04.3 LTS

Linux ip-<ip> 2.6.32-318-ec2 #38-Ubuntu SMP Thu Sep 1 18:09:30 UTC 2011 x86_64 GNU/Linux

Это мой /etc/security/limits.conf

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#    ftp             -       chroot          /ftp
#@student        -       maxlogins       4



#for all users
* hard nofile 16384
* soft nofile 9000

Подробнее

Я использую флаг оптимизации gcc

O3 

Я устанавливаю размер потока в стеке .5 mb.

Ответы [ 4 ]

3 голосов
/ 16 апреля 2012

Я помню, что существует жесткий предел, который может быть установлен администратором, и мягкий предел, который устанавливается пользователем.Если мягкий предел больше жесткого ограничения, принимается значение жесткого ограничения.Я не уверен, что это справедливо для любой оболочки, я знаю это только из bash.

2 голосов
/ 10 июля 2014

У меня была такая же проблема с усечением файлов ядра.

Дальнейшие исследования показали, что ulimit -f (он же file size, RLIMIT_FSIZE) также влияет на файлы ядра, поэтому убедитесь, что лимит также неограничен / достаточно высок. [Я видел это в ядре Linux 3.2.0 / debian wheezy.]

1 голос
/ 30 апреля 2012

Жесткие лимиты и мягкие лимиты имеют некоторые особенности, которые могут быть немного странными: см. это об использовании sysctl для внесения изменений в последний раз.

Существует файл , который вы можете редактировать так, чтобы последние ограничивали размеры, хотя, вероятно, есть соответствующая команда sysctl, которая сделает это ...

0 голосов
/ 28 декабря 2014

Подобная проблема произошла, когда я вручную убил программу с помощью kill -3. Это произошло просто потому, что я не дождался завершения генерации файла ядра.

Убедитесь, что размер файла перестал расти, и только затем откройте его.

...