Here follows the description
and status of old bugs. For recent bugs please consult the bug
tracker on sourceforge.
#1:
description: files
pointed to by a symbolic links get their times (mtime & atime) not
properly restored
problem: when restoring
time of a symbolic link the
utime() system call does not change the inode of
the symbolic link itself but the one of the file pointed to by the
symbolic link
solution: as the utime()
call behaves the same on
many Unix platforms, (HP-UX, Solaris, Linux,
etc.), the times for the symbolic links are no more
restored, thus files
pointed to by symbolic links are not affected by the
utime()
strange behavior. Dar, behaves not the same as touch,
tar, etc.
affects
version: 1.0.0
fixed
in version: 1.0.1
#2:
description: dar
immediately exits with message "file mode is
neither read nor write" while
creating an archive on 64 bits platforms.
problem: missing mask with
O_ACCMODE for flags
returned by fcntl() system call
solution:
O_ACCMODE mask added
affects versions: 1.0.0, 1.0.1
fixed in version: 1.0.2
#3:
description: making
differential backup with some directory
implicitly or explicitly (-P) excluded,
sometime lead to full backup.
problem:
when entering a directory that was ignored,
the comparison in the catalogue of reference was
not going back to the parent directory, leading the
comparison to be
no more synchronized with the file being read.
solution:
added a line to go back to parent
directory when treating an ignored directory
affects versions: 1.0.0, 1.0.1
fixed in version: 1.0.2
#4:
description: on Linux 64
bits, when an interaction from the user is required,
(escape or return
key), the keys have to be pressed four time before dar
can read a
character.
problem: unknown,
same code works
fine on other platforms, and if bad character remains in
the pipe, the
message would be displayed several time, which is not the
case, here.
It seems that the user has to press four key for the
first one to be
accessible to dar.
solution:
none actually
affects versions: 1.0.0, 1.0.1 , 1.0.2 and probably
also 1.1.0
fixed in version: none
#5:
description: Dar stops one
of the two following error:
--- exception nature = [alive] exception type =
[BUG] ----------
[source]
file
compressor.cpp line 244 : it seems to be a bug here
[most outside call]
-----------------------------------
or
--- exception nature = [alive] exception type =
[BUG] ----------
[source]
file
compressor.cpp line 254 : it seems to be a bug here
[most outside call]
-----------------------------------
problem:
the zlib deflate() calls
returned an unexpected value (Z_STREAM_END) and inflate()
in some rare
cases was called without data to process, when reaching
end of file,
which made inflate() to return Z_BUF_ERROR code.
solution:
adding code for taking care
of the returned code Z_STREAM_END by deflate(), and code
for
taking care of Z_BUF_ERROR returned at end of file.
affects version: 1.0.0, 1.0.1, 1.0.2
fixed in version: 1.0.3
#6:
description: Dar does not
properly display dates on Linux 64 bits systems.
problem:
non portable cast from
'time_t' to 'unsigned long int'
solution:
changed code not to have to
use 'unsigned long int'
affects version: 1.0.x, 1.1.x
fixed in version: 1.2.0
#7:
description: while saving,
Dar stops when a given inode could not
be read, even if the inode had not to
be saved
problem: Dar
reads all file in the
directory to save, and then applies filters to their
filename. Error
appears before the filter, leading to a global saving
error.
solution:
read error are now caught
sooner a message is displayed that the file or directory
will be
ignored, and saving process continues. As this error
occurs before
testing filename against filters, an error message is
still displayed
(which may seems strange when the file was about to be
excluded by
filter mechanism)
Just reminds that dar reads a directory contents first, and
then check filenames against
filter. At the time of the message, Dar does not know the
file would
not to be saved. Thus, don't worry if you see this kind
of
message, they don't mean that dar was about to save the
given file but
rather exactly what the message says, that the file or
directory could
not be read. ;-)
affects version: 1.0.x, 1.1.x
fixed in version: 1.2.0
#8:
description: when saving
hard linked file using filter that does
not save the first hard link, dar
stops with SEGFAULT.
problem:
The first hard link is used
as reference for the following occurrences. As it is not
covered by the
filter it is destroyed in filter module, but filesystem
module keeps
using it as reference for following hard links on that
inode.
solution:
added a call in filesystem
module to "forget" a given reference. This way, if a
file_etiquette is
not covered, filter module can inform filesystem module
to delete
the corresponding entry on the hard link map. Subsequent
hard link on
that inode will generate first a new file_etiquette,
which will
be used as reference (unless it is not covered by filter
too).
affects version: 1.1.x
fixed in version: 1.2.0
#9:
description: failed
to read an archive
under windows NT and 2000
problem: error
concerning the integer
macro definition (module integer.hpp)
solution: replaced
the macro by a
proper definition.
affects version: 1.2.0
fixed in version: 1.2.1
#10:
description: when
using dar on windows95
if giving c:/ or other driver to -R option, dar stops
with the
following error:
file filesystem.cpp line 186
: it seems to be a bug here
problem: dar
checks first that c:/ is
a directory. Cygwin says yes this dar continues : from
c:/ dar
completes the path with a dot thus dar tries to open the
path
c:/. which is Cygwin does not report as an existing
directory.
solution:
dar does not try to open
c:/. but tries to open c:/ . Moreover additional code as
been
added to detect the incoherence if in some other
conditions such
problem occurs. Dar will report the exact problem (path
does not
exist / or path is not a directory)
affects version: 1.2.1, 1.2.0
fixed in version: 1.3.0
#11:
description: when giving to
dar_manager
an absolute path to -r option dar_manager stops with
INTERNAL ERROR message.
problem: a
check is missing to
display error message in such condition
solution:
added a error message, if an
absolute path is given to -r
affects dar_manager version : 1.0.0
fixed in dar_manager version : 1.0.1
#12:
description: memory leakage
when using -Z
or -Y option. This bug has been found and explained by David
Rose, who proposed a good patch, which I have just a little
adapted.
problem:
the dar code that call the
zlib when changing the compression algorithm did properly
released memory allocated by dar but forget to execute a call of
the zlib library that releases memory allocate by the library
itself.
solution:
solution, add call to
release memory used by zlib library when changing of compression
algorithm
affects dar version : 1.2.0, 1.2.1
fixed in dar version : 1.3.0
#13:
description: archive
created by dar under
Windows NP SP6, XP, 2000, cannot be read, tested. All action on
generated archive finishes by CRC error message, incoherent
catalogue structure, or badly formated infinint.
problem:
under windows, Dar uses
Cygwin. As Unix and Window do not define end of line the same way (\n
for Unix and \r\n for Windows), Cygwin translates end of
line on the fly when reading a file (Windows to Unix), and when
writing (Unix to Windows). At writing time especially,
each \n anywhere in the archive is written \r\n, thus two
bytes get written in place of one. In another hand, to get the
global position in the whole archive dar counts bytes it writes
to file. Thus a shift occurs between the position it thinks it
writes the catalogue and the position it actually does. Thus
reading the archive, the given position is wrong, and archive cannot
be opened.
solution:
deactivate the translation
when generating the archive. Cygwin adds a two special flags to
pass to open(2) which are O_TEXT and O_BINARY, that change the
way Cygwin handles file read(2) and write(2).
affects all dar suite program version 1.0.x, 1.1.x,
1.2.x
fixed in dar version 1.3.0
#14:
description: Dar aborts
with the
following message
---- exception nature
= [alive] exception type = [BUG] ----------
[source]
file compressor.cpp
line 320 : it seems to be a bug here
[most outside call]
-----------------------------------
It appears while doing a
backup using compression and scrambling (could not (yet) be reproduced
twice).
problem:
this message is issued
because zlib library reported an inconsistency in call order or in call
arguments given to zlib calls. Actually I cannot figure out what is
wrong, nor how this bug may happens.
solution:
none actually at the time of
2.0.0 release.
But, if you are face to face
with this bug, thanks to try reproducing it, re-issuing the same
command in the same condition, and if possible to reproduce then
as much as possible reduce the necessary environment condition that
make this bug happen. Then please, contact me (either via Sourceforge
or via email).
affects version 1.2.1 (at least)
not yet fixed (check Sourceforge for fresh news),
nor reproduced.
#15:
description: Dar aborts
with the following
message when giving -y0 as argument
---- exception nature =
[alive] exception type = [BUG] ----------
[source]
file compressor.cpp line 96 : it seems to be a bug here
[most outside call]
-----------------------------------
problem:
correct compression level for zlib
are from 0 to 9, 0 meaning no compression, while for libbz2
correct compression levels are from 1 to 9, thus zero is not a valid
value. libbz2 returns an error code which triggers a libdar internal
sanity check code, which throws this BUG exception.
solution:
forbid the use of -z0 or -y0. If
you don't want compression, you will need to not give neither -z nor
-y.
affects version 1.3.0
fixed in version 2.0.0
#16:
description: Dar include
does not ignore
comments in included file as given by -B option
problem:
when a line with only one
carriage-return is put in a file, the following line is considered as a
normal line (not a comment), whatever it is, in particular if it starts
with a hash (#).
solution:
make the algorithm consider normal
line once another character than space, tab hash or carriage-return
is met. (added the carriage-return in the list).
affects version 1.2.0, 1.2.1, 1.3.0
fixed in version 2.0.0
#17:
description: Dar warns that
the archive is about to
save itself while a -P option is used to prevent this eventuality.
problem:
testing against this situation did not
check that a parent directory of the path where is saved the archive is
excluded by a -P option.
solution:
updating the test for the warning only
appear in real auto-saving conditions.
affects version 2.0.0
fixed in version 2.0.1
#17bis:
description: save as #17,
but in the case where the
archive is in the under the current directory, and some -P options
exclude it.
problem:
the current directory "." is not
substitued by its full path, and the testing algorithm does tread
"." as directly under the root "/" directory, no -P could thus
exclude it from the files to save.
solution:
for testing and preventing
self-backup, "." is replaced by its full path counterpart. affects
version 2.0.0, 2.0.1, fixed in version 2.0.2
#18:
description: Dar does not
save files or just stores
empty directories when using -B option or having a ~/.darrc or
/etc/darrc file
problem:
the parsing code that strip the comments
from files is not counting empty lines ('\n')
between two lines of commands (i.e.: uncommented lines). This strips
the last uncommented line before the next line of comment, usually
leading to
the removal of an ending '\n' in the uncommented line, implying
the
fusion of the last command on this line and the next command on any
uncommented after the last line of comment two commands that were
initially
separated by a '\n' and one or several lines of comments. This
wrongly interpreted
command most of the time appear as a member of [list of path] and
thus restricts the backup to only a subdirectory that most of the
time does not exist. If -D option is used, all first level directory
are excluded from backup and thus stored as empty directories.
solution:
bug fix in no_comment.cpp. A workaround
is to remove comments or empty lines from configuration files.
affects versions 2.0.0, 2.0.1
fixed in versions 2.0.2
#19:
description: Dar hangs when
using --nodump with named
pipe to save
problem:
to get the nodump flag value, dar needs
to call the open() system call in read-only mode. For named pipes
this system call does return only when another process opens the
same pipe in
write mode.
solution:
as proposed by Joshua Neal, the open
will be set to non blocking mode to return immediately.
affects version 1.3.0, 2.0.0, 2.0.1
fixed in version 2.0.2
#20:
description: dar_manager
did not completely removed
reference to an archive when it was removed from a database
problem:
data_dir is a C++ class that inherit
from data_tree. This one has a virtual method remove_all_from(), that
had was redefined in the data_dir class with a very little difference,
making it not be a redefinition of the inherited class. (argument was
"archive_num" in place of "const & archive_num"). This redefined
method was never called, and the removal never recursed in
subdirectories.
solution:
make the two signature identical in the
mother and inherited classes.
affects version 1.3.0, 2.0.0, 2.0.1, 2.0.2
fixed in version 2.0.3
#21:
description: under FreeBSD
using -B option leads to
parse error
problem:
under FreeBSD, getopt() call is not
reset just by setting optind to zero like under Linux, but the variable
optreset must be set to 1.
solution:
configure script now check for the
presence of optreset variable which allows to properly reset the
getopt call according to the system nature.
affects version 2.1.0 and older
fixed in version 2.1.1
#22:
description: dar stops when
fed with an empty file
for -B option
problem:
the comments stripping class lack a
variable initialization
solution:
initialize variable before use
affects version 2.1.0 and older
fixed in version 2.1.1
#23:
description: -z -y -H and
-w do not work under FreeBSD
problem:
the getopt() version does not support
optional arguments
solution:
document this problem, and make possible
to reach any feature
in the meanwhile, replace
-z
by -z 9
-y by -y 9
-H by -H 1
-w by -w d (added for the
circumstances)
affects all versions
documented starting version 2.1.2 (see dar's man
page)
#24:
description: under windows
2000 SP4 failed to
properly save a text file with DOS carriage return. Testing the archive
reports CRC error.
problem:
The cygwin adaptation layer for dar to
be able to run under windows, needs non standard flag mode to not
automatically translate between windows and unix carriage return. This
bug is related to bug #13 which fix was not properly applied in
one single place.
solution:
properly apply the fix of bug #13 in
this single place too.
affects version 2.1.1 and older
fixed in version 2.1.2
#25:
description: under some
hypothetical conditions (when
the archive is larger than 10^16 Terabytes, 1 followed by 16
zeros), dar is not able to read the archive.
problem:
In this situation, the terminateur is
not properly formed and cannot fulfill its role: point to the start of
the catalogue. A byte 0x00 is missing near the end of the archive,
that indicate the end of the terminateur.
solution:
properly write down terminateur string
of archive. Note that archive produced by earlier version are not
possible to read dar version that have the fix, but don't worry, if
you have a such big archive (more than 10^16 Terabytes), tell me I will
create a little program that fixes the archive ;-) . Note,
"terminateur" the french word for terminator, the word has been kept
here
because it is used in the source code.
affects version 2.1.2 and older
fixed in version 2.1.3
#26:
description: in
configuration file using conditional
syntax (see man page), when two targets follow each other on two
directly following lines (the first condition is thus empty), the
second condition is skipped. This condition also occurs if there is
only
comments between the two targets.
problem:
when looking for the first target, an
extra character is read (the first of the second target), as there is
no
contents in this target no reposition (seek) in the file is done,
and the search for the next target start at that point (second
character of
the second target), which makes the second target not recognized
because
of the missing initial character.
solution:
avoid reading this extra character so
the next character to read is the first character (not the second) of
the
following target.
affects version 1.2.0 and older versions
fixed in version 2.1.3
#27:
description: when restoring
only more recent files
(-r), with hourshift activated (-H) the -H feature was randomly not
activated.
problem: a
test comparing the dates is made on
address's objects rather on objects themselves. This leads to the -H
test
being activated randomly depending on address of two objects to compare.
solution:
make the test on objects rather than on
their addresses in memory.
affects version from 2.0.0 to 2.1.3
fixed in version 2.1.4
#28:
description: dar does not
restore root Extended
Attributes
problem: a
collision occurred in the naming of
the enumeration listing the extended attributes available domains,
and the variables carrying user choice to consider or not user or
root extended attributes for the operation (backup, restoration,
comparison, etc.)
solution:
rename both the domain enumeration and
the variables carrying user choice about extended attribute
comportment.
affects version from 2.1.0 to 2.1.3
fixed in version 2.1.4
#29:
description: dar does
Segmentation fault during
backup when hard links are involved
problem:
when an plain file inode linked several
time to the directory tree (a hard linked file), is not readable
due to a lack a permission, the filesystem module generates a C++
object and stores its address for further reference and hard link
handling. When the file opening comes an exception is throw, leading to
this object destruction, but the reference stays in the the filesystem
module, leading the next link to this inode being referenced by a
destroyed object.
solution:
remove the reference when exception is
caught. This removal was properly done when such an inode was not to be
saved (and the corresponding C++ object was destroyed), the case of the
exception had been forgotten.
affects version up to 2.1.4
fixed in version 2.1.5
#30:
description: compilation
failed with syntax error
reported in libstdc++ header files (reported on Solaris and openBSD).
problem:
the configure scripts does detect the
presence of mbstate_t type, and redefines it. This conflicts the system
header files and lead to a syntax error.
workaround 1:
will
update the configure script to
check if that fixes the problem. Else there is a workaround. Once
configure
has finished, edit the config.h file adding the line
#define
HAVE_MBSTATE_T 1
and
commenting out the line
#define mbstate_t int
Thanks to Steve Evans for this
workaround.
solution:
undefine the mbstate_t in dar's source
code. This is implemented and seems to work. No action is required for
your part.
may affects version up to 2.2.0
fixed in version 2.2.1
#31:
description: dar segfault
when restoring Extended
Attributes
problem:
to speed up the reading of the catalogue
from an archive an intermediate layer has been added thanks to an
"cache" object. This object is temporary instead of the object it
does caching
on. When the catalogue reading has finished, the reference given to
inode
becomes invalid because it is the caching object in place of the real
underlying archive object.
solution:
keep doing archive reading through the
caching object but give the real archive object to the inode contained
in
the catalogue for they have a valid reference when it is time to
restore EA.
affects version 2.2.0
fixed in version 2.2.1
#32:
description: dar is unable
to read blowfish encrypted
archives under certain conditions
problem:
this bug appears when using infinint (no
--enable-mode in command-line). The implicit cast from a unsigned
integer to an infinint in a operation was not properly made by the
compiler.
Instead of converting the system integer to an infinint which is
possible
thanks to the infinint constructor class, the compiler down cast the
the
unsigned integer to unsigned char.
solution:
use explicit cast conversion when doing
operations which concern both infinint and unsigned integers.
affects version 2.2.0
fixed in version 2.2.1
#33:
decription: dar hangs when
the last line of a DCF file is
starting with a few spaces or tabs just following a comment.
problem:
The layer that removes comments was
counting the bytes from the beginning while the first byte retained as
significative was the first non space of the line. leading to provide
to upper
layer a wrong information about the number of byte in the file.
solution:
start counting bytes from the first
significative byte of the line instead of the first byte of the line.
affects versions 2.1.x up to 2.2.0
fixed in version 2.2.1
#34:
description: when restoring
files in a directory, this one
has all permission set for every body. This makes a security hole on
multi-user system.
problem:
when restoring in a directory as non
privileged user it is necessary to have write access to that directory,
thus temporary change the permission. The permission is thus changed,
but the
temporary change is too permissive, thus opens a security hole,
allowing local
user delete/create/replace under the directory restored.
solution:
only add the user write access (if necessary)
to the directory when dar is run as non privileged user.
affects versions 1.x.x up to 2.2.0
fixed in version 2.2.1
#35:
description: when producing
archive to stdout sometimes the
message "Error while saving data: Bad file descriptor
given" is displayed and dar aborts its execution
problem:
health check done on a uninitialized object
field in place of a constructor's argument that will be used to
set this field.
solution:
test the method's argument in place of the
object field
affects version 2.2.x up to 2.2.3
fixed in version 2.2.4
#36:
description:
when using -I or -X with -l option directory names are also filtered
while they should not be, as described in the man page
solution:
avoid
having -X/-I filtering directories
affected versions 2.2.x up to 2.2.5
fixed in 2.2.6
#37:
description: when restoring
a file which all EA has been dropped since the archive of reference,
dar reports CRC error.
problem:
to store that EA has been dropped, dar saves an empty EA list, but did
not calculated the CRC value
solution:
make the CRC value set when storing an empty list of EA. Note that this
bug did not cause any problem except a CRC error message.
affects versions up to 2.2.6
fixed in 2.2.7
|