Age | Commit message (Collapse) | Author |
|
One of our devices does not like 'to_erl' to be run over a serial port.
When to_erl is started, we see "Attaching to /tm<0xFF>" being printed
and the device then refuses to accept any input. Occasionally, we have
seen a linux kernel error message "serial8250: too much work for irq16"
simultaneously. After some debugging we found out that cause is a call
to tcsetattr() by to_erl, immediately preceeded by some printf().
The UART in our device doesn't like hardware parameters to be changed
while output is concurrently active. In fact, the GNU libc manual also
mentions that it might be dangerous to change UART hardware parameters
when a transmission is ongoing.
The patch attached to this e-mail changes the behaviour of to_erl to use
TCSADRAIN instead of TCSANOW when changing terminal parameters. This
makes the serial driver wait for the output queues to be empty before
applying the terminal parameter change.
|
|
* raimo/race-in-prim_inet-close/OTP-10497:
Do not unlink before closing port
|
|
* nox/fix-silent-rules/OTP-11111:
Fix some Makefile rules that didn't support silent rules
|
|
|
|
* sverk/win64-fixes:
erts: Change some more 'long' to pointer sized int (ErlDrvUInt)
erts: Fix crash in nif_SUITE for win64
erts: Fix assert in isdigit for negative characters
|
|
* lukas/erts/process_memory_crash_dump/OTP-11098:
Bump crash dump version
|
|
|
|
* nox/fix-wcwidth/OTP-11106:
Properly guard WIDE_TAG use with HAVE_WCWIDTH in ttsl_drv
|
|
* rickard/frmptr:
Add 'frmptr' emulator type
Conflicts:
erts/preloaded/ebin/erlang.beam
|
|
* rickard/nosuspend/OTP-11076:
Only verify not busy for erlang:send(Port, Msg, [nosuspend]) until scheduled
|
|
* rickard/inet_opts/OTP-11075:
Make high_msgq_watermark and low_msgq_watermark generic inet options
Conflicts:
erts/preloaded/ebin/prim_inet.beam
|
|
* rickard/inet_db/OTP-11074:
Do not treat port_set_data/port_get_data as signals
Conflicts:
erts/preloaded/ebin/erlang.beam
erts/preloaded/ebin/erts_internal.beam
|
|
* lukas/erts/process_memory_crash_dump/OTP-11098:
Print process memory usage info in crash dump
|
|
* lukas/erts/nodes_rwlock_contentions/OTP-11097:
Change rwlock to rlock where possible
|
|
Having rwlock could cause high unneccesary contention on the
dist table when calling erlang:nodes() from many schedulers at
the same time.
|
|
* lukas/erts/win32_io_flush_hangs/OTP-11096:
Repeat flush loop at timeout intervals
|
|
|
|
|
|
* nox/wide-chars/OTP-11088:
Support wide characters in the shell through wcwidth()
Fix bogus DEBUGLOG() incantations in ttsl_drv
|
|
|
|
|
|
|
|
* sverk/fix-alloc-fixes:
erts: Remove unnecessary utf8 analysis step in external decoding
erts: Fix locking order violation for allocation wrappers
erts: Change locking order for "port_table" and "port_sched_lock"
erts: Adjust sizes for fix allocator
erts: Fix unabused bug in fixed allocation
erts: Fix benign size-bug for fix-allocators MONITOR_SH and NLINK_SH
erts: Refactor in new struct ErtsAllctrFixDDBlock_t
OTP-11085
|
|
* nox/fix-warnings/OTP-11086:
Fix some sign warnings found with Clang
Fix a shift/reduce conflicts warning in icparse
Fix two deprecation warnings in com.ericsson.otp.ic.Environment
Define matherr only on platforms where it is used
Properly declare _sigaction on Darwin
Properly mark Uint literals as unsigned in big.c
Do not use -mdynamic-no-pic on Darwin
|
|
'long' is not pointer sized on win64
|
|
|
|
|
|
|
|
|
|
|
|
|
|
There is one remaining bug where ttsl_drv's state ends up inconsistent
with the terminal own state; when a wide character is entered on the
last column of the terminal.
Reported-by: Loïc Hoguin
|
|
|
|
Latest OS X versions ignore this flag as non PIC objects are
discouraged.
|
|
|
|
|
|
Running some valgrind memory checking showed the error below:
==18040== Thread 6:
==18040== Source and destination overlap in memcpy(0xf3f3f04, 0xf3f3f08, 52)
==18040== at 0x4C2CFA0: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==18040== by 0x5CF527: del_chars (ttsl_drv.c:845)
==18040== by 0x5CED5E: ttysl_from_erlang (ttsl_drv.c:658)
==18040== by 0x4982E3: erts_write_to_port (io.c:1235)
==18040== by 0x49A2BD: erts_port_command (io.c:2223)
==18040== by 0x48C054: do_send (bif.c:1962)
==18040== by 0x48CB6E: erl_send (bif.c:2162)
==18040== by 0x566599: process_main (beam_emu.c:1665)
==18040== by 0x4B1A95: sched_thread_func (erl_process.c:4834)
==18040== by 0x6075E2: thr_wrapper (ethread.c:106)
==18040== by 0x5560E99: start_thread (pthread_create.c:308)
This occurred on Linux using R15B01 while the shell was emitting a prompt,
but the same problem is still present in R16B.
Change the memcpy on line 845 of ttsl_drv.c to memmove as valgrind
suggests. After the change, verify with valgrind that the error no longer
occurs.
|
|
|
|
* maint-r16:
Prepare release
Prepare release
Do not count offline run-queues as empty
Prepare release
Prevent loss of objects after the extension marker
Don't lose the extension mark for object set parameters
Conflicts:
erts/vsn.mk
|
|
|
|
* siri/doc-fnu-opts/OTP-10901:
Add documentation of w, i and e addition to +fnu and +fna switches to erl
|
|
These were documented in the stdlib user's guide, but not in the
reference manual for erl. This has now been corrected.
|
|
To ensure that 'master' compiles when we merge 'maint' to it,
regardless of which encoding is default in 'master', all source
files with non-ascii characters *must* have the encoding specified.
|
|
|
|
Faulty utf8 atoms are rejected anyway later when the atom is created.
|
|
Some query functions in erl_alloc_util.c lock the allocator mutex
and then use erts_printf that in turn may call the sys allocator
through the wrappers. To avoid breaking locking order these
query functions first "pre-locks" all allocator wrappers.
|
|
Keep order between the two but move them before all the allocation locks.
Old order violated for "port_table" lock in ptab_list_bif_engine().
|
|
|
|
|
|
* atj/atj-fix-message_que_len-typo/OTP-11024:
Fix typo in type: erlang:process_info_item()
|