Skip to content

Set LIBFFI_TMPDIR at startup (#80651)#80699

Merged
elasticsearchmachine merged 2 commits intoelastic:7.16from
DaveCTurner:2021-11-15-backport-80651-7.16
Nov 15, 2021
Merged

Set LIBFFI_TMPDIR at startup (#80651)#80699
elasticsearchmachine merged 2 commits intoelastic:7.16from
DaveCTurner:2021-11-15-backport-80651-7.16

Conversation

@DaveCTurner
Copy link
Copy Markdown
Member

Today if libffi cannot allocate pages of memory which are both
writeable and executable then it will attempt to write code to a
temporary file. Elasticsearch configures itself a suitable temporary
directory for use by JNA but by default libffi won't find this
directory and will try various other places. In certain configurations,
none of the other places that libffi tries are suitable. With older
versions of JNA this would result in a SIGSEGV; since #80617 the JVM
will exit with an exception.

With this commit we use the LIBFFI_TMPDIR environment variable to
configure libffi to use the same directory as JNA for its temporary
files if they are needed.

Closes #18272
Closes #73309
Closes #74545
Closes #77014
Closes #77053
Relates #77285

Co-authored-by: Rory Hunter roryhunter2@gmail.com

Today if `libffi` cannot allocate pages of memory which are both
writeable and executable then it will attempt to write code to a
temporary file. Elasticsearch configures itself a suitable temporary
directory for use by JNA but by default `libffi` won't find this
directory and will try various other places. In certain configurations,
none of the other places that `libffi` tries are suitable. With older
versions of JNA this would result in a `SIGSEGV`; since elastic#80617 the JVM
will exit with an exception.

With this commit we use the `LIBFFI_TMPDIR` environment variable to
configure `libffi` to use the same directory as JNA for its temporary
files if they are needed.

Closes elastic#18272
Closes elastic#73309
Closes elastic#74545
Closes elastic#77014
Closes elastic#77053
Relates elastic#77285

Co-authored-by: Rory Hunter <roryhunter2@gmail.com>
@DaveCTurner DaveCTurner added :Core/Infra/Core Core issues without another label backport auto-merge-without-approval Automatically merge pull request when CI checks pass (NB doesn't wait for reviews!) labels Nov 15, 2021
@elasticmachine elasticmachine added the Team:Core/Infra Meta label for core/infra team label Nov 15, 2021
@elasticmachine
Copy link
Copy Markdown
Collaborator

Pinging @elastic/es-core-infra (Team:Core/Infra)

@DaveCTurner
Copy link
Copy Markdown
Member Author

I guessed at how to backport this since the packaging tests look somewhat different in 7.16, but I didn't guess right it seems. @pugnascotia would you work your magic on the failures here?

@pugnascotia
Copy link
Copy Markdown
Contributor

It's probably due to security-on-by-default differences. I'll check out the branch and take a look.

@pugnascotia
Copy link
Copy Markdown
Contributor

@DaveCTurner I pushed a tweak that I think will fix it. I wonder if makes more sense to use a utility like ServerUtils.waitForElasticsearch(Installation) since it abstracts away all the security stuff, and also retries if the HTTP request doesn't work at first, which would make the tests more robust in the face of a slow CI agent. But that can wait for later.

@elasticsearchmachine elasticsearchmachine merged commit 9acb783 into elastic:7.16 Nov 15, 2021
@DaveCTurner DaveCTurner deleted the 2021-11-15-backport-80651-7.16 branch November 18, 2021 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge-without-approval Automatically merge pull request when CI checks pass (NB doesn't wait for reviews!) backport :Core/Infra/Core Core issues without another label Team:Core/Infra Meta label for core/infra team v7.16.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants