Age | Commit message (Collapse) | Author |
|
* lukas/erts/fdopen_non_bound_win32_fix/OTP-12289:
erts: getsockname is not allowed on non-bound sockets
|
|
|
|
This only produces an error on win32, but should not really be called
on *nix either.
|
|
|
|
Conflicts:
erts/doc/src/notes.xml
erts/preloaded/ebin/prim_inet.beam
erts/vsn.mk
lib/kernel/doc/src/notes.xml
lib/kernel/vsn.mk
|
|
Inet close must remove fd from select/poll without closing the fd.
|
|
|
|
If the initial stat() fails then efile_openfile() will still proceed
to open() the file. If that succeeds and the caller passed a non-NULL
pSize, then it will copy bogus data from the statbuf into *pSize. This
has been observed to cause file:read_file/1 to return truncated file
data with no error indication.
The use case involved a large file system mounted via NFS, with some
directories containing large number of files, and NFS mount options
that allow the NFS client to return EIO if the NFS server does not
respond quickly enough. Depending on the caching state of the client
and server machines, a few stat() calls (fewer than 1 per 10 million)
would take long enough to trigger EIO errors, but subsequent open()
calls would succeed, and read_file/1 would return truncated data. This
sequence of events has been observed via "strace" on beam.smp.
Signed-off-by: Mikael Pettersson <[email protected]>
|
|
* lukas/ose/master-17.0/OTP-11334:
erts: Move debug printout to eliminate gcc warning
|
|
|
|
* lukas/ose/master-17.0/OTP-11334:
ose: Fix erts assert failed printouts
ose: fix for packet_bytes in fd/spawn driver.
ose: Prepare slave for running on OSE
ose: Fix bug when hunting for signal proxy
ose: Implement tcp inet driver for OSE
ose: Add ifdefs for HAVE_UDP
ose: Yielding has to be done differently for background processes.
ose: Print faults in aio sys driver calls
ose: Prinout errno when to_erl read fails
ose: erlang display goes to ramlog printf
ose: Initiate stdin/stdout/stderr
ose: Break lmconf into one per load module
ose: Reset busy port when pdq empty
ose: Restore the owner of the signal
|
|
The inet driver for OSE has to handle signals instead of selects
and thus the wrappers for ready_input/output are a little bit
different. However the majority of the inet code remains the same.
|
|
|
|
* bjorn/erts/zlib-fix:
zlib: Fix adler32_combine/4 and crc32_combine/4
|
|
* sverk/win-long-filenames/OTP-11813:
erts: Cleanup debug tracing in win_efile.c
erts: Fix file:list_dir for windows paths 258 or 259 chars long
erts: Increase MAXPATHLEN to 4096 for windows
erts: Fix bug in efile_readlink for long win paths
kernel: Fix failed tests in prim_file_SUITE for windows
erts: Fix compiler warning in win_efile.c
erts: Skip tests of paths longer than 255 characters as atoms
erts: Skip tests of file:set_cwd for too long path on Windows
erts: Make file:make_symlink/2 return {error,eperm} on Windows
erts: Revert file:set_cwd impl for windows
erts: Ignore reduntant slashes in windows paths
fix file_SUITE:cur_dir_0 for long windows paths
erts: Fix file_SUITE:make_del_dir for long paths
erts: Fix long windows paths for compressed files
erts: Use GetFullPathNameW to construct abs paths from relative ones
erts: Fix file driver to handle long paths on windows
Conflicts:
erts/emulator/drivers/win32/win_efile.c
|
|
|
|
Appending wildcard "\*" made the path too long (>= 260 chars).
|
|
|
|
and some improved debug tracing
|
|
if the user has not the privilege SE_CREATE_SYMBOLIC_LINK_NAME
|
|
Since our config.h is included in each source file in the zlib
directory, we must make sure that config.h is also included
every time zlib functions are called to ensure that definitions
of types are consistent.
zlib_drv.c did not include config.h, which caused problems on
a MacOS X Leopard system. What happened was that HAVE_UNISTD_H
was not defined when zlib.h was included. When unistd.h is not
known to exist, the type z_off_t will be set to a long (32 bits
on this platform). But when the zlib source files were compiled,
HAVE_UNISTD_H was defined, unistd.h would be included, and
z_off_t would be set to off_t (64 bits; defined in unistd.h).
As a result of the mismatch, calls to the adler32_combine() and
crc32_combine() would pass only 32 bits in the len2 argument when
64 bits were expected.
|
|
No need to even try as CWD can not bee a long path anyway.
|
|
|
|
|
|
|
|
|
|
* lukas/ose/master/OTP-11334: (71 commits)
erts: Fix unix efile assert
ose: Use -O2 when building
ose: Expand OSE docs
ose: Add dummy ttsl driver
ose: Cleanup cleanup of mutex selection defines
ose: Polish mmap configure checks
ose: Add ose specific x-compile flags
ose: Updating fd_driver and spawn_driver for OSE
ose: Updating event and signal API for OSE
ose: Cleanup of mutex selection defines
win32: Compile erl_log.exe
ose: Remove uneccesary define
ose: Fix ssl configure test for osx
erts: Fix sys_msg_dispatcher assert
ose: Fix broken doc links
ose: Thread priorities configurable from lmconf
ose: Yielding the cpu is done "the OSE" way
ose: Start using ppdata for tse key
ose: Do not use spinlocks on OSE
ose: Fix support for crypto
...
Conflicts:
lib/crypto/c_src/crypto.c
|
|
If writev return an error (eg ENOSPC) we do not want to abort here
but instead propagate upwards into erlang.
|
|
|
|
|
|
The pattern used for getting the priority from the lmconf
is based on the name of the process created. The pattern is:
ERTS_%%PROCESS_NAME%%_PRIO
with the %%PROCESS_NAME%% replaced by the prefix of the process
the priority applies to. eg:
ERTS_SCHEDULER_PRIO=24
applies to processes with name SCHEDULER_1, SCHEDULER_2 etc.
|
|
This new API has less impact on the check_io code and
also removes the callback from ErlDrvEntry. The downside
is that you have to give the resolve function when creating
each event.
Also the mode if the resolve was removed as this mimics the
win32 code and decreases complexity.
|
|
Some OSE cross-chains have problems with system includes
being used, so for atleast OSE specific parts we use ""
instead of <>.
|
|
|
|
|
|
|
|
|
|
The interface of this module is made to be as generic as possible
in order for other IPC mechanisms to mimic it and allow porting of
code between different os:es.
|
|
This is needed because OSE does not use 1 for SEEK_CUR
|
|
This is needed because OSE does not have the same integers
as unix/win32 for SEEK_ST and friends.
|
|
This port has support for both non-smp and smp.
It contains a new way to do io checking in which erts_poll_wait
receives the payload of the polled entity. This has implications
for all linked-in drivers.
|
|
Daniel Goertzen reported that commit 8a147a7365 broke building
of Erlang/OTP on Gentoo Linux because the macro OF() was missing.
Apparently, on Gentoo the OF() macro in zconf.h has been renamed
to _Z_OF() (to avoid polluting the global namespace).
Don't use the OF() macro in gzio.c since it no longer serves any
useful purpose (it provided compatibility with pre-ANSI/ISO C
compilers, but the rest of Erlang/OTP requires an ANSI/ISO C
compiler anyway).
|
|
* lukas/erts/sendfile_no_async_pool/OTP-11639:
erts/kernel: sendfile no longer uses async threads
|
|
* lukas/erts/sendfile_passive_mode_fix/OTP-11614:
erts: fix bug when using passive mode and sendfile
|
|
The bug incorrectly issued driver_select when un-ignoring an fd
for a socket in passive mode, which caused an incorrect error
tuple to be returned when the remote end closed the connection.
|
|
This has been done because a slow client attack is possible if the
async thread pool is used. The scenario is:
Client does a request for a file and then slowly receives the file one
byte at a time. This will eventually fill the async thread pool with blocking
sendfile operations and thus starving the vm of all file operations.
If you still want to use the async threads pool for sendfile an option to
enable it has been introduced.
|
|
gzio.c is our own replacement for zlib's gzopen() etc
(based on a version of gzio.c that was included in an old version
of zlib).
Unfortunately, gzio.c still depends on the *internal* zlib header file
zutil.h which is not supposed to be used outside of the zlib source
code. The dependencies are the use of the gzFile typedef and the
F_OPEN() macro.
Instead of gzFile, define and use our own ErtsGzFile.
To get rid of the F_OPEN() macro, call open() of _wfopen() directly.
|
|
|
|
|
|
|