Age | Commit message (Collapse) | Author |
|
I noticed that running an R16B03-1 node on an overloaded host produced
log entries like the following ones:
```
2014-08-22 21:52:31 =ERROR REPORT====
Error in process <0.24112.3> on node '[email protected]' with exit value: {{case_clause,{data,4711}},[{cpu_sup,get_uint32_measurement,2,[{file,"cpu_sup.erl"},{line,227}]},{cpu_sup,measurement_server_loop,1,[{file,"cpu_sup.erl"},{line,585}]}]}
```
```
===== ALIVE Fri Aug 22 21:50:14 CEST 2014
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
===== ALIVE Fri Aug 22 22:07:46 CEST 2014
```
I performed a code inspection on the `cpu_sup` module and I concluded
that the `case_clause` error shows a small issue in the `cpu_sup`
module, that happens when the port used in `cpu_sup` is slow to start
- as it may happen on an overloaded node.
The `cpu_sup` `gen_server` process keeps in its state the pid of an
unlinked process (called "measurement server" - see `cpu_sup:init/1`),
in order to do dirty stuff (e.g. reading the filesystem, running OS
commands) and start_link-ing & managing the connected process to a
port (called "port server" - see `measurement_server_init/0`). So the
process organization looks like this:
```
cpu_sup - measurement server - port server - port
```
When the measurement server start_links the port server (see
`port_server_start/0`) it sends a `{self(), ?ping}` message to it and
expects an answer within 6s, otherwise it returns `{error, timeout}`
rather than the pid. This has two issues:
* The measurement server keeps `{error, ...}` in its state as if it
were a pid - that makes no sense;
* A late `{Pid, {data,4711}}` response may arrive in the mailbox of
the measurement server, that will believe it to be a request to be
processed, causing a `case_clause` error.
This commit teaches the measurement server to check the success of the
initialization of the port server by matching on the return value of
`port_server_start/0` (renamed to `port_server_start_link/0` for the
sake of clarity) in order to fail earlier and with an error clearer
than `{case_clause,{data,4711}}`. In such case I expect the
measurement server to be restarted by the `cpu_sup` `gen_server` (see
`handle_call/3`) - as before.
BTW It is not clear to me when the `handle_info({'EXIT', _Port,
Reason}, State)` may be called (the `cpu_sup` `gen_server` does not
link to the measurement server) but I am leaving it.
|
|
For some reason only a new testcases were run on the majority of
platforms. After this change all tests are run on all unix and win32
platforms.
|
|
|
|
On embedded (Linux) systems the "df" program is very often provided by
the Busybox (or Toolbox) project. This version does not provide the "-l"
option (for displaying only local filesystems) used in disksup.erl.
To make disksup work on these embedded platforms, this patch adds a new
application parameter 'disksup_posix_only', to make diskup use only
options defined in the POSIX standard:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/df.html
|
|
|
|
child not started on windows so test fails
|
|
Enable a cross compile Erlang/OTP platform to Android or Raspberry PI
using Android NDK. Port emulator and core application to support target
HW platform. Exclude any add-on services required for OTP platform deployment
into target hardware due to device fragmentation and jail-break requirements.
* fix erts/emulator/beam/sys.h
Disable redefinition of __noreturn macro
* port erts/emulator/sys/unix/erl_child_setup.c
Use techniques proposed by https://code.google.com/p/erlang4android to
access system properties
* fix erts/emulator/sys/unix/erl_unix_sys_ddll.c
The static linking of emulator cannot find dlerror(), dlopen() symbols
* port erts/emulator/sys/unix/sys.c
make path to shell configurable at build time
* port erts/etc/common/Makefile.in
disable librt for *-linux-androideabi
* port erts/lib_src/pthread/ethread.c
Use techniques proposed by https://code.google.com/p/erlang4android to
disable emulator crash if kernel threads are on. Replace unreliable
pthread_sigmask() by sigprocmask()
* port lib/erl_interface/src/connect/ei_connect.c
Disable call to undefined gethostid()
* port lib/erl_interface/src/connect/ei_resolve.c
Use gethostbyname_r() on Android platform
|
|
Most dependencies introduced are exactly the dependencies to other
applications found by xref. That is, there might be real dependencies
missing. There might also be pure debug dependencies listed that
probably should be removed. Each application has to be manually
inspected in order to ensure that all real dependencies are listed.
All dependencies introduced are to application versions used in
OTP 17.0. This since the previously used version scheme wasn't
designed for this, and in order to minimize the work of introducing
the dependencies.
|
|
Ensure all are "normal" versions according to the new version scheme
introduced in OTP 17.0
|
|
Add the mentioned test suites for *all* library and touched
non-library applications.
|
|
Fix the appup files of runtime_tools and os_mon with wildcard
version regexps. inets, odbc and ssh regexps have been corrected
to match as originally intended.
|
|
The R16B03 release
Conflicts:
lib/sasl/vsn.mk
|
|
|
|
|
|
Application memsup should be calculating free memory using the
speculative pages, in the same manner that the Activity Monitor and top
programs on OS X do. In addition, correct page size to 4096, based on
verification of available memory between top, vm_stat and Activity
Monitor.
|
|
The R16B02 release
Conflicts:
lib/sasl/vsn.mk
|
|
|
|
|
|
The correct kstat datatype for nproc & avenrun_* is ui32, not
ulong. Under 64-bit OTP builds garbage was returned because the wrong
datatype was used.
This patch correcs the datatype. It also adds an additional check
in the test case for a slightly less insane return value.
|
|
|
|
Otherwise something like this will fail:
./otp_build setup --enable-m32-build
make clean
./otp_build setup --enable-m64-build
|
|
* maint:
Add smoke tests
|
|
* lukas/smoketests/OTP-11221:
Add smoke tests
|
|
Smoke tests are meant to verify that a build of erlang has been successfull.
|
|
|
|
Trying to compile R16B01 on SmartOS resulted in following errors:
gcc -c -o ../priv/obj/i386-pc-solaris2.11/ferrule.o -Werror=return-type -g -O2 -I/root/otp_src_R16B01/erts/i386-pc-solaris2.11 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename -DHAVE_CONFIG_H ferrule.c
ferrule.c:53:1: error: return type defaults to 'int' [-Werror=return-type]
...
gcc -c -o ../priv/obj/i386-pc-solaris2.11/mod_syslog.o -Werror=return-type -g -O2 -I/root/otp_src_R16B01/erts/i386-pc-solaris2.11 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename -DHAVE_CONFIG_H mod_syslog.c
mod_syslog.c:50:1: error: return type defaults to 'int' [-Werror=return-type]
mod_syslog.c: In function 'make_exit':
mod_syslog.c:136:5: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default]
mod_syslog.c: In function 'main':
mod_syslog.c:131:1: error: control reaches end of non-void function [-Werror=return-type]
Adding return values and types to `main` functions in `mod_syslog.c` and
`ferrule.c` fixed the build.
|
|
|
|
* egil/os_mon/fix-bsd-disksup/OTP-11207:
os_mon: Fix openbsd diskspace queries
os_mon: Fix freebsd diskspace queries
|
|
|
|
Capacity can be zero on certain filesystems.
Remove reported mountpoints with zero capacity during tests since
these reports false positives.
|
|
Use 'df -k -l' to query OpenBSD about diskspace on local disks.
Same reasoning as for FreeBSD - additional filesystems without
listing them all.
|
|
Use 'df -k -l' to query FreeBSD about diskspace on local disks.
Previously 'df' -k -t ufs' was used but this will not handle zfs
disks. Just use '-l' instead of listing potential filesystems.
|
|
Notably, remove ?line macro.
|
|
|
|
The R16B01 release
Conflicts:
lib/sasl/vsn.mk
|
|
|
|
|
|
|
|
|
|
|
|
* siri/spawn-and-space:
[sasl] In test, quote erlsrv executable in call to open_port/2
[test_server] Quote path to erl executable when starting slave nodes
Quote path to erl executable in slave to allow space in path
[sasl] Quote path to program run with open_port({spawn,...
[os_mon] Quote path to programs run with open_port({spawn,...
Conflicts:
lib/os_mon/src/nteventlog.erl
|
|
|
|
|
|
This is to allow space in the path.
|
|
* yt/netbsd/OTP-10941:
Moved ifdef NetBSD to proper place
reduce bashism
compilation fix for NetBSD
compilation fix for NetBSD
|
|
* sm/fix-disksup-susv3/OTP-10945:
This patch fixes disksup:get_disk_data for SUSv3, specifically OS X ML
|
|
|
|
taken from a pkgsrc patch: patch-lib_os__mon_c__src_memsup.c
|
|
|
|
On OS X Mountain Lion, the default output of df command includes iNode
used and iNodes free, which apparent what SUSv3 specifies. This breaks
the current parse logic and reports incorrect results. This patch adds
support for the new format and ensures older versions of OS X produce
this format by adding the -i switch (which is now the default). Adding
support for this new format rather than changing df output as we'll
presumably see this on other platforms eventually.
|