Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from erlang:master #87

Merged
merged 197 commits into from
Dec 20, 2023
Merged

[pull] master from erlang:master #87

merged 197 commits into from
Dec 20, 2023

Conversation

pull[bot]
Copy link

@pull pull bot commented Dec 5, 2023

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

ivanov and others added 30 commits November 14, 2023 15:09
introducing lf(), lt(), lr() to list local functions, types and
 records respectively.
introducing fl(), ff(), tf() to remove locally defined types
 and functions.
introducing save_module(FilePath) that saves local defined
 functions and types to given filename.
updating fd to store the original function definition.
updating rd, rf to accurately add and remove locally defined records
 to local table.
The bug requiring this workaround was fixed by
fc63402 and
b813bc0.
If the URL has an anchor part at the end (# with line number),
color that line to make it easier to find on the screen.
…frag-unaliased-leak/25/OTP-18885

* rickard/frag-unaliased-leak/24/OTP-18885:
  [erts] Fix memory leak of fragmented message to unaliased process
…frag-unaliased-leak/OTP-18885

* rickard/frag-unaliased-leak/25/OTP-18885:
  [erts] Fix memory leak of fragmented message to unaliased process
…frag-unaliased-leak/25/OTP-18885

* rickard/frag-unaliased-leak/24/OTP-18885:
  [erts] Fix crash on reception of fragmentated message to unaliased process
…frag-unaliased-leak/OTP-18885

* rickard/frag-unaliased-leak/25/OTP-18885:
  [erts] Fix crash on reception of fragmentated message to unaliased process
These macros should ignore the extra bits in the signal tag. This since
as of the changes introduced in this branch, those are not always zero
anymore (non-zero means that a trace token is attached to the signal).

This bug has never been released, so it needs no ticket of its own.
We can do this because we know that the list will contains valid
unicode code points so there is no need to validate it again. This
speeds up reading standard_io a lot.

Solves #7924
for macros
enif_select_read
enif_select_write
enif_select_error
beam/erl_nif.c:1476:8: warning: conflicting types for 'enif_binary_to_term' due to enum/integer mismatch; have 'size_t(ErlNifEnv *, const unsigned char *, size_t,  ERL_NIF_TERM *, ErlNifBinaryToTerm)' {aka 'long unsigned int(struct enif_environment_t *, const unsigned char *, long unsigned int,  long unsigned int *, ErlNifBinaryToTerm)'} [-Wenum-int-mismatch]
 1476 | size_t enif_binary_to_term(ErlNifEnv *dst_env,
      |        ^~~~~~~~~~~~~~~~~~~
In file included from beam/erl_nif.c:44:
beam/erl_nif_api_funcs.h:174:31: note: previous declaration of 'enif_binary_to_term' with type 'size_t(ErlNifEnv *, const unsigned char *, size_t,  ERL_NIF_TERM *, unsigned int)' {aka 'long unsigned int(struct enif_environment_t *, const unsigned char *, long unsigned int,  long unsigned int *, unsigned int)'}
  174 | ERL_NIF_API_FUNC_DECL(size_t, enif_binary_to_term, (ErlNifEnv *env, const unsigned char* data, size_t sz, ERL_NIF_TERM *term, unsigned int opts));
      |                               ^~~~~~~~~~~~~~~~~~~
beam/erl_nif.h:369:71: note: in definition of macro 'ERL_NIF_API_FUNC_DECL'
  369 | #  define ERL_NIF_API_FUNC_DECL(RET_TYPE, NAME, ARGS) extern RET_TYPE NAME ARGS
      |                                                                       ^~~~

0 is a valid parameter but is not in the enum, so the extern
declaration is the correct one. Changed the function definition,
documentation, and a test case to match.
During high load, we observe lock contention on this ETS table:

```
> lcnt:inspect(db_tab, [{print, [id, colls, ratio, duration]}]).

                      id  #collisions  collisions [%]  duration [%]
                     --- ------------ --------------- -------------
ssl_otp_cacertificate_db         7827         12.5136      616.1264
     ssl_otp_ca_file_ref           30          0.2561        0.0026
```

ets:select is more efficient than using ets:foldl and in practice
reduces the contention that we see here.

Separately I plan to also issue another PR to add read_concurrency to
the ETS table which has also helped reduce the incidence of this.
We see lock contention on this table under high load, e.g.

```
> lcnt:inspect(db_tab, [{print, [id, colls, ratio, duration]}]).

                      id  #collisions  collisions [%]  duration [%]
                     --- ------------ --------------- -------------
ssl_otp_cacertificate_db         7827         12.5136      616.1264
     ssl_otp_ca_file_ref           30          0.2561        0.0026
```

Use read_concurrency as this is a read-heavy table and this has helped
reduce the lock contention seen here.
* upstream/pr/7921:
  Add read_concurrency to ssl_otp_cacertificate_db
* maint:
  Add read_concurrency to ssl_otp_cacertificate_db
  Optimize pkix_db cert selection
This option requires traversing the loadpaths
several times and doing multiple filesystem
lookups during boot.
* jv-code-path-strict-updated:
  Update preloaded modules
  Default -code_path_choice to strict

OTP-18894
* rickard/mon-msgq-len/OTP-18709:
  [erts] Fix alias signal type check macros
…ak/OTP-18885

Fix memory leak and crash due to fragmented message to unaliased process
* maint:
  [erts] Fix crash on reception of fragmentated message to unaliased process
  [erts] Fix memory leak of fragmented message to unaliased process
rickard-green and others added 29 commits December 18, 2023 13:41
* maint:
  Update license information for OTP 25
  Fixes of license and copyright information
* john/merge-strict-KEX:
  ssh: KEX strict
* maint:
  ssh: KEX strict
* maint-26:
  Updated OTP version
  Prepare release
  Update copyright year
* maint:
  Updated OTP version
  Prepare release
  Update copyright year
* maint-25:
  Updated OTP version
  Prepare release
  Update copyright year
* maint:
  Updated OTP version
  Prepare release
  Update copyright year
* maint-24:
  Updated OTP version
  Prepare release
  Update copyright year
* maint:
  Updated OTP version
  Prepare release
  Update copyright year
* john/kernel/merge-jv-ensure-loaded-to-master:
  Avoid mixed usage of ebin directories on build
  Fix regressions in ensure_loaded
Fix regressions in code:ensure_loaded/1
…c/OTP-18908

stdlib: Preserve cwd when compiling using c:c/1
…unctions-to-chunks

Add hidden functions to chunks
Eliminate memory leak in the native coverage feature
* bjorn/cuddle-with-tests:
  Reduce memory consumption for test of list_to_integer/1
* maint:
  Reduce memory consumption for test of list_to_integer/1
…ne/OTP-18910

kernel: Short-circuit when casting from list to list
@garazdawi garazdawi merged commit 5640a6f into garazdawi:master Dec 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.