| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
a3e48b697fa664110567fcd0027d24ea5a239041
... so that the testbench continues to work
|
|
|
|
| |
it permits to specifiy if asynchronous writing should be done or not
|
|
|
|
|
| |
some versions of autotools seem to require it. The file itself is NOT
of interest for the project
|
|
|
|
|
|
|
| |
Further testing turned out that the rsyslog core works correctly and
this fix is not needed. The concurrency we saw was actually caused by
other actions (even processes) during directory creation. See commit
9e5b31fc44136dbcc1e443cfe7714e9daf97d844 for further details.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some types of malformed messages could trigger an off-by-one error
(for example, \0 or \n as the last character, and generally control
character escaption is questionable). This is due to not strictly
following a the \0 or string counted string paradigm (during the last
optimization on the cstring class). As a temporary fix, we have
introduced a proper recalculation of the size. However, a final
patch is expected in the future. See bug tracker for further details
and when the final patch will be available:
http://bugzilla.adiscon.com/show_bug.cgi?id=184
Note that the current patch is considered sufficient to solve the
situation, but it requires a bit more runtime than desirable.
|
|
|
|
|
|
|
|
|
| |
This bug was triggered by an open failure. The the cache was full and
a new entry needed to be placed inside it, a victim for eviction was
selected. That victim was freed, then the open of the new file tried. If
the open failed, the victim entry was still freed, and the function
exited. However, on next invocation and cache search, the victim entry
was used as if it were populated, most probably resulting in a segfault.
|
|
|
|
|
|
|
| |
If multiple files try to create a directory at (almost) the same time,
some of them may fail. This is a data race and also exists with other
processes that may create the same directory. We do now check for this
condition and gracefully handle it.
|
|
|
|
|
|
| |
The old code looks a bit "strange", though not necessarily incorrect.
The new code looks correct and is probably less irritating during bug
hunting.
|
|
|
|
|
|
|
| |
when dynaCache is enabled, the cache is full, a new entry needs to
be allocated, thus the LRU discarded, then a new entry is opend and that
fails. In that case, it looks like the discarded stream may be reused
improperly (based on code analysis, test case and confirmation pending)
|
| |
|
| |
|
|
|
|
| |
Most importantly, this keeps the thread debugger output clean.
|
|
|
|
|
|
|
| |
properly initialized.
However, in practice the loader initializes them with zero, the
desired value, so there were no actual issue in almost all cases.
|
| |
|
| |
|
|
|
|
| |
This is what caused the new test to fail...
|
|
|
|
|
| |
note that so far no patch is provided. This has not yet been made
part of "make check"
|
|
|
|
|
|
|
|
|
|
|
|
| |
file instance
In theory, the rsyslog core should never call in parallel into an output
module for the same instance. However, it looks like this seems to happen
under (strange?) circumstances. I have now enhanced omfile so that it guards
itself against being called in parallel on the same instance data. This is
done to help troubleshooting and may stay as an interim solution if it
proves to solve an anomaly we see in at least one installation (to trigger
this problem, an extremely large traffic volume is needed).
|
|
|
|
| |
also improved nettester testbench tool a bit
|
| |
|
|
|
|
| |
the test cases actually have some races, not the code to be tested
|
| |
|
|
|
|
|
|
|
|
| |
The previous fix fixed an issue with on/off bying used in the exact wrong
semantic. It corrected the situation, but failed to fix one spot where the
wrong semantics were used. This is done with this commit.
Note that this is NOT a bug seen in any released version.
|
|
|
|
|
|
|
| |
currently being accessed buffer could be overwritten with new data.
While this probably did not cause access violations, it could case loss
and/or duplication of some data (definitely a race with no deterministic
outcome)
|
|
|
|
|
| |
predicate was not properly checked when waiting for the background file
writer
|
| |
|
|
|
|
|
| |
Internal data structures were not properly protected due to missing
mutex calls.
|
|
|
|
|
| |
... it turns out that this is sometimes extremely useful when debugging
real-world problems at user sites.
|
| |
|
|
|
|
|
|
| |
Note that this introduces a test case that breaks the current code. This
commit does NOT yet provide the necessary code patch. Thus "make check"
does currently hang.
|
|
|
|
|
|
| |
Note that this introduces a test case that breaks the current code. This
commit does NOT yet provide the necessary code patch. Thus make check
does currently hang.
|
|
|
|
| |
(this is primarily meant as a debug aid)
|
| |
|
| |
|
| |
|
|
|
|
| |
This could only happen during config file parsing.
|
|
|
|
|
| |
this is an excerpt from some of the more intensen manual tests
I am doing, stripped down to be useful inside the testbench.
|
| |
|
|
|
|
|
|
| |
Previously, it could lead to garbagge output and, in extreme cases, also
to segfaults. Note: this was a problem only when debug output was
actually enabled, so it caused no problem in production use.
|
|
|
|
| |
also improved testing tools to support new testcase structure
|
| |
|
| |
|
|
|
|
|
| |
this is a perquisite to support more flexible testing modes, which
could not intelligently be implemented with the old interface
|
|\ |
|
| |
| |
| |
| |
| |
| | |
disk queue mode did no longer work correctly. A side-effect of
this commit here is slightly cleaned-up (and more elegant) code
for circular files.
|
|/
|
|
|
|
| |
note that a buffer size calculation was done wrong, but this was cosmetic
because our buffers currently all use byte size, so even though the
formula was wrong, the result was correct.
|
|
|
|
|
|
|
|
|
|
| |
- improved testbench
- bugfix: potential data loss during file stream shutdown
- bugfix: potential problems during file stream shutdown
The shutdown/close sequence was not clean, what potentially (but
unlikely) could lead to some issues. We have not been able to describe
any fatal cases, but there was some bug potential. Sequence has now
been straighted out.
|
|
|
|
|
|
|
|
|
|
| |
When a write error occured in stream.c, variable iWritten had the error
code but this was handled as if it were the actual number of bytes
written. That was used in pointer arithmetic later on, and thus could
lead to all sorts of problems. However, this could only happen if the
error was EINTR or the file in question was a tty. All other cases were
handled properly. Now, iWritten is reset to zero in such cases, resulting
in proper retries.
|
|
|
|
|
| |
required because due to bug the default was actually different than
specified (or better said: spec was inconsistent in doc as well).
|
| |
|