| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
regarding the handling of wrapped dynamic libraries.
The basic flow of operation is to copy such libraries into a temp
file, hand them to the OS loader for processing, and then to delete
them immediately, to prevent them from being accessible to other
executables. On platforms where that is not possible the library is
left in place and things are arranged to delete it on regular process
exit.
An example of the latter are older revisions of HPUX which report that
the file is busy when trying to delete it. Younger revisions of HPUX
have changed to allow the deletion, but are also buggy, the OS loader
mangles its data structures so that a second library loaded in this
manner fails.
More recently it was found that Linux which is usually ok with
deleting the file and gets everything right shows the same trouble as
modern HPUX when the "docker" containerization system is involved, or
more specifically the AUFS in use there. Deleting the loaded library
file mangles data structures and breaks loading of the following
libraries. For a demonstration which does not involve Tcl at all see
the ticket
https://github.com/dotcloud/docker/issues/1911
in the docker tracker.
This of course breaks the use of wrapped executables within docker
containers.
This commit introduces the function TclSkipUnlink() which centralizes
the handling of such exceptions to unlinking the library after unload,
and provides code handling the known cases. IOW HPUX is generally
forced to not unlink, and ditto when we detect that the copied library
file resides within an AUFS.
The latter must however be explicitly activated by setting the define
-DTCL_TEMPLOAD_NO_UNLINK during build. We still need proper configure
tests to set it on the relevant platforms (i.e. Linux).
The AUFS detection and handling can be overridden by the environment
variable TCL_TEMPLOAD_NO_UNLINK which can force the behaviour either
way (skip or not). In case the user knows best, or wishes to test if
the problem with AUFS has been fixed.
|
| |
|
|
|
|
| |
Tcl_StatBuf has an "#include <sys/stat.h>" before including tcl.h
|
|\
| |
| |
| | |
for upwards compatibility with version 2 filesystems
|
| |
| |
| |
| | |
for upwards compatibility with version 2 filesystems
|
| | |
|
| | |
|
| |
| |
| | |
for the filesystem subsystem.
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
prevent any overwriting of that per-thread cache. This keeps active traversals
of the list valid. The possible downside is that this may result in some delay
in noticing new epochs and result in somewhat greater likelihood we will cache
things in a "path" value that are out of date. Since the system has to deal
with out of date cached data anyway, this should have no correctness affects,
measured against the status quo. In multi-threaded operation the possibility
of caching and/or retrieving outdated information can never be eliminated.
Checkin also includes merge of 8.5.
|
|\ \ \
| |/ / |
|
| | | |
|
|\ \ \
| |/ / |
|
| | |
| | |
| | | |
memory are more likely to segfault and not remain hidden.
|
|\ \ \
| |/ / |
|
| | |
| | |
| | | |
Store the Tcl_Filesystem instead, which is what we actually need.
|
| | |
| | |
| | | |
something we are caching.
|
|\ \ \
| |/ / |
|
| |\ \
| | |/ |
|
| | | |
|
| |\ \
| | |/ |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
care must be taken that the value cannot possibly become pure Unicode. Calling
Tcl_AppendToObj() has the possibility of making such a conversion. Bug found
while valgrinding the trunk.
|
| | |
| | |
| | | |
On cygwin, install dll's in /usr/bin, not in /usr/lib
|
| | |
| | |
| | | |
by the test attached to Tcl Bug 3024359.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The problem with release of the elements of a fileSystemList by one routine
while some other (caller) routine is still traversing that list is not
dependent on threaded operations. An unthreaded build can still encounter
the problem. Revised so that threaded/unthreaded operations are much closer
to the same (no direct TCL_THREADS dependency). Also simplified the epoch
checking which reduces locking to when it's needed. Still have the problem
of returning as valid FilesystemRecords that are pulled from an outdated
epoch.
|
| | | |
|
|/ / |
|
|\ \
| |/
| |
| |
| | |
move up #undef, for macro which is conflicting with later stuff.
remove some unused cygwin-related code
some minor gcc warnings
|
| |
| |
| |
| | |
macro is conflicting with another definition in this file.
Fix some other gcc warnings
|
|\ \
| |/ |
|
| | |
|
|\ \
| |/ |
|
| |\ |
|
| |/ |
|
| | |
|
| |
| |
| |
| | |
n mingw, sys/stat.h must be included
before winsock2.h, so make sure of that
|
| |
| |
| |
| | |
right for cygwin and WIN64 as well.
|
| |
| |
| |
| | |
in VS10)
|
| | |
|
|\ \
| |/
| | |
more harm than good. Purged them.
|
| |
| |
| | |
more harm than good. Purged them.
|
| |
| |
| |
| |
| |
| | |
* tests/fileName.test: that assumed (not "absolute" => "relative").
This is a false assumption on Windows, where "volumerelative" is
another possibility. [Bug 2571597].
|
| |
| |
| |
| |
| | |
flag value TCLPATH_NEEDNORM to mark those intreps which need more
complete normalization attention for correct results. [Bug 2385549]
|
| |
| |
| |
| | |
Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654].
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
operating on the "Special path" variant of the "path" Tcl_ObjType
intrep. A full normalization was getting done, in particular, coercing
relative paths to absolute, contrary to what the function of
producing the "translated path" is supposed to do. [Bug 1972879].
|