Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

logfile overwritten when symlink + delaycompress used #10

Open
drzraf opened this issue Dec 14, 2015 · 6 comments
Open

logfile overwritten when symlink + delaycompress used #10

drzraf opened this issue Dec 14, 2015 · 6 comments
Labels

Comments

@drzraf
Copy link

drzraf commented Dec 14, 2015

I found to have lost many logs due to a setup specificity:
I had:

vhost1/logs/access.log
vhost2/logs/access.log
vhost3 -> vhost1

and this kind of configuration :

/vhosts/vhost*/logs/*.log {
       monthly
        missingok
        rotate 48
        compress
        delaycompress
        notifempty
        create 660 root
        sharedscripts
        postrotate
                if [ -f /var/run/apache2.pid ]; then
                        /etc/init.d/apache2 reload > /dev/null
                fi
        endscript
}

I found that vhosts1/logs/access.log.1 was always empty, and thus subsequently compressed files were empty too.
If I run logrotate on a specific vhost, the access.log.1 is created and not null.
I'm still not sure about the root cause but I my guess is that the following happens:

  • vhost1/logs/access.log is moved to vhost1/logs/access.log.1
  • vhost2 is treated
  • vhost3/logs/access.log, now empty, is moved anyway and overrwrite vhost3/logs/access.log.1 (which actually is vhost1/logs/access.log.1)

All my vhosts having symlink were affected by the issue.
Using the (quite old) logrotate 3.7.8-4ubuntu2.2

@jankaluza
Copy link
Member

This is caused by a way how logrotate works. It first checks the state of all logs matching the pattern and then rotates them. So vhost3 is also valid for a rotation during this step. Once it starts rotating the logs, it has no clue (currently), that it has rotated it already as part of vhost1 rotation.

I will think what to do with that, but I don't want to change the rotation strategy completely...

@zuf
Copy link

zuf commented Feb 15, 2016

Is it possible to add option skip symlinks?

cgzones referenced this issue in cgzones/logrotate Oct 7, 2019
logrotate might crash when using invalid configuration settings in combination with include

example configuration:

    /tmp/logsegv/segv.log {
      include /tmp/logsegv/segv.cfg

      "" {

      }
    }

will lead to

    $ ./logrotate -vfd -s /tmp/logsegv/segv.state /tmp/logsegv/segv.cfg
    WARNING: logrotate in debug mode does nothing except printing debug messages!  Consider using verbose mode (-v) instead if this is not what you want.

    reading config file /tmp/logsegv/segv.cfg
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:2 include nesting too deep
    error: /tmp/logsegv/segv.cfg:4 unexpected log filename
    error: found error in /tmp/logsegv/segv.log , skipping
    removing last 1 log configs
    error: /tmp/logsegv/segv.cfg:4 unexpected log filename
    error: found error in log config, skipping
    removing last 1 log configs
    config.c:553:23: runtime error: load of null pointer of type 'struct logInfo *'
    SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior config.c:553:23 in
    AddressSanitizer:DEADLYSIGNAL
    =================================================================
    ==12601==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000004d79a1 bp 0x7ffca98d0c30 sp 0x7ffca98d0c10 T0)
    ==12601==The signal is caused by a READ memory access.
    ==12601==Hint: address points to the zero page.
      #0 0x4d79a0 in freeTailLogs logrotate/config.c:553:23
      #1 0x4cb482 in readConfigFile logrotate/config.c:1870:21
      #2 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #3 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #4 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #5 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #6 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #7 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #8 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #9 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #10 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #11 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #12 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #13 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #14 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#15 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#16 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#17 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#18 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#19 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#20 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#21 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#22 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#23 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#24 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#25 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#26 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#27 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#28 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#29 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#30 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#31 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#32 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#33 0x4c70bb in readAllConfigPaths logrotate/config.c:759:13
      logrotate#34 0x4d961d in main logrotate/logrotate.c:2791:9
      logrotate#35 0x7fa31d719bba in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bba)
      logrotate#36 0x41f7a9 in _start (logrotate/logrotate+0x41f7a9)

    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV /home/christian/Coding/workspaces/smartgit/logrotate/config.c:553:23 in freeTailLogs
    ==12601==ABORTING

fixes: logrotate#271
cgzones referenced this issue in cgzones/logrotate Oct 7, 2019
logrotate might crash when using invalid configuration settings in combination with include

example configuration:

    /tmp/logsegv/segv.log {
      include /tmp/logsegv/segv.cfg

      "" {

      }
    }

will lead to

    $ ./logrotate -vfd -s /tmp/logsegv/segv.state /tmp/logsegv/segv.cfg
    WARNING: logrotate in debug mode does nothing except printing debug messages!  Consider using verbose mode (-v) instead if this is not what you want.

    reading config file /tmp/logsegv/segv.cfg
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:2 include nesting too deep
    error: /tmp/logsegv/segv.cfg:4 unexpected log filename
    error: found error in /tmp/logsegv/segv.log , skipping
    removing last 1 log configs
    error: /tmp/logsegv/segv.cfg:4 unexpected log filename
    error: found error in log config, skipping
    removing last 1 log configs
    config.c:553:23: runtime error: load of null pointer of type 'struct logInfo *'
    SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior config.c:553:23 in
    AddressSanitizer:DEADLYSIGNAL
    =================================================================
    ==12601==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000004d79a1 bp 0x7ffca98d0c30 sp 0x7ffca98d0c10 T0)
    ==12601==The signal is caused by a READ memory access.
    ==12601==Hint: address points to the zero page.
      #0 0x4d79a0 in freeTailLogs logrotate/config.c:553:23
      #1 0x4cb482 in readConfigFile logrotate/config.c:1870:21
      #2 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #3 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #4 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #5 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #6 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #7 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #8 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #9 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #10 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #11 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #12 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #13 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #14 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#15 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#16 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#17 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#18 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#19 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#20 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#21 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#22 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#23 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#24 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#25 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#26 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#27 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#28 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#29 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#30 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#31 0x4d164c in readConfigFile logrotate/config.c:1457:30
      logrotate#32 0x4c78fc in readConfigPath logrotate/config.c:685:13
      logrotate#33 0x4c70bb in readAllConfigPaths logrotate/config.c:759:13
      logrotate#34 0x4d961d in main logrotate/logrotate.c:2791:9
      logrotate#35 0x7fa31d719bba in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bba)
      logrotate#36 0x41f7a9 in _start (logrotate/logrotate+0x41f7a9)

    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV /home/christian/Coding/workspaces/smartgit/logrotate/config.c:553:23 in freeTailLogs
    ==12601==ABORTING

fixes: logrotate#271
kdudka pushed a commit that referenced this issue Oct 8, 2019
logrotate might crash when using invalid configuration settings in combination with include

example configuration:

    /tmp/logsegv/segv.log {
      include /tmp/logsegv/segv.cfg

      "" {

      }
    }

will lead to

    $ ./logrotate -vfd -s /tmp/logsegv/segv.state /tmp/logsegv/segv.cfg
    WARNING: logrotate in debug mode does nothing except printing debug messages!  Consider using verbose mode (-v) instead if this is not what you want.

    reading config file /tmp/logsegv/segv.cfg
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    reading config file /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log
    including /tmp/logsegv/segv.cfg
    error: /tmp/logsegv/segv.cfg:2 include nesting too deep
    error: /tmp/logsegv/segv.cfg:4 unexpected log filename
    error: found error in /tmp/logsegv/segv.log , skipping
    removing last 1 log configs
    error: /tmp/logsegv/segv.cfg:4 unexpected log filename
    error: found error in log config, skipping
    removing last 1 log configs
    config.c:553:23: runtime error: load of null pointer of type 'struct logInfo *'
    SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior config.c:553:23 in
    AddressSanitizer:DEADLYSIGNAL
    =================================================================
    ==12601==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000004d79a1 bp 0x7ffca98d0c30 sp 0x7ffca98d0c10 T0)
    ==12601==The signal is caused by a READ memory access.
    ==12601==Hint: address points to the zero page.
      #0 0x4d79a0 in freeTailLogs logrotate/config.c:553:23
      #1 0x4cb482 in readConfigFile logrotate/config.c:1870:21
      #2 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #3 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #4 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #5 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #6 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #7 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #8 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #9 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #10 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #11 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #12 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #13 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #14 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #15 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #16 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #17 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #18 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #19 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #20 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #21 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #22 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #23 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #24 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #25 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #26 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #27 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #28 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #29 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #30 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #31 0x4d164c in readConfigFile logrotate/config.c:1457:30
      #32 0x4c78fc in readConfigPath logrotate/config.c:685:13
      #33 0x4c70bb in readAllConfigPaths logrotate/config.c:759:13
      #34 0x4d961d in main logrotate/logrotate.c:2791:9
      #35 0x7fa31d719bba in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bba)
      #36 0x41f7a9 in _start (logrotate/logrotate+0x41f7a9)

    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV /home/christian/Coding/workspaces/smartgit/logrotate/config.c:553:23 in freeTailLogs
    ==12601==ABORTING

Fixes: #271
Closes #272
@Alexander-Shukaev
Copy link

Any chance to ever see an option for ignoring symbolic links (as already suggested by @zuf)?

@Alexander-Shukaev
Copy link

I see that prerotate also does not check whether script exit status is non-zero. So there is no way to generically implement prerequisite/precondition checks. Either introduction of such generic script option, e.g. predicate or prerequisite or precondition, or notiflink should resolve this issue.

@kdudka
Copy link
Member

kdudka commented Jul 2, 2020

I see that prerotate also does not check whether script exit status is non-zero.

I believe it does.

So there is no way to generically implement prerequisite/precondition checks.

Could the firstaction script be used for this?

@cgzones
Copy link
Member

cgzones commented Jul 3, 2020

Any chance to ever see an option for ignoring symbolic links

Maybe something like: https://github.com/logrotate/logrotate/compare/master...cgzones:ignore_duplicate_symlinks?expand=1

Edit: it might be racy and won't work if a parent directory is also a symlink (e.g. /var/log/httpd/vhost3/logs/access.log, where /var/log/httpd is a symlink to /var/log/apache2 and /var/log/httpd/vhost3 a symlink to /var/log/httpd/vhost1)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants