Re: RFR: 8331331: :tier1 target explanation in doc/testing.md is incorrect
On Mon, 29 Apr 2024 16:14:45 GMT, SendaoYan wrote: > Hi, > > In doc/testing.md file, it says: > > As an example, :tier1 will expand to jtreg:$(TOPDIR)/test/hotspot/jtreg:tier1 > jtreg:$(TOPDIR)/test/jdk:tier1 jtreg:$(TOPDIR)/test/langtools:tier1 > jtreg:$(TOPDIR)/test/nashorn:tier1 jtreg:$(TOPDIR)/test/jaxp:tier1. > > The actual situation is :tier1 doesn't contains test/nashorn:tier1, and the > document missed test/lib-test:tier1 > > $ make -n test-tier1 &> test-tier1.log > $ grep "Running test " test-tier1.log > Running test 'jtreg:test/hotspot/jtreg:tier1' > Running test 'jtreg:test/jdk:tier1' > Running test 'jtreg:test/langtools:tier1' > Running test 'jtreg:test/jaxp:tier1' > Running test 'jtreg:test/lib-test:tier1' > > Only change the document, no risk. Perhaps we should rephrase this so it is not an exhaustive list that has to be updated if the test groupings change. Suggestion: As an example, :tier1 will expand to include all subcomponent test directories that define `tier1`, for example: jtreg:$(TOPDIR)/test/hotspot/jtreg:tier1 jtreg:$(TOPDIR)/test/jdk:tier1 jtreg:$(TOPDIR)/test/langtools:tier1 - PR Review: https://git.openjdk.org/jdk/pull/19002#pullrequestreview-2030302932
Re: RFR: 8330182: Start of release updates for JDK 24 [v3]
On Mon, 29 Apr 2024 22:50:26 GMT, Joe Darcy wrote: >> Get JDK 24 underway. > > Joe Darcy has updated the pull request with a new target base due to a merge > or a rebase. The incremental webrev excludes the unrelated changes brought in > by the merge/rebase. The pull request contains seven additional commits since > the last revision: > > - Update deprecated options test. > - Merge branch 'master' into JDK-8330188 > - Merge branch 'master' into JDK-8330188 > - Merge branch 'master' into JDK-8330188 > - Correct release date as observed in review feedback. > - Improve javadoc of class file update. > - JDK-8330182: Start of release updates for JDK 24 >JDK-8330183: Add SourceVersion.RELEASE_24 >JDK-8330184: Add source 24 and target 24 to javac Marked as reviewed by iris (Reviewer). - PR Review: https://git.openjdk.org/jdk/pull/18787#pullrequestreview-2030298396
Re: RFR: 8330182: Start of release updates for JDK 24 [v3]
> Get JDK 24 underway. Joe Darcy has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision: - Update deprecated options test. - Merge branch 'master' into JDK-8330188 - Merge branch 'master' into JDK-8330188 - Merge branch 'master' into JDK-8330188 - Correct release date as observed in review feedback. - Improve javadoc of class file update. - JDK-8330182: Start of release updates for JDK 24 JDK-8330183: Add SourceVersion.RELEASE_24 JDK-8330184: Add source 24 and target 24 to javac - Changes: - all: https://git.openjdk.org/jdk/pull/18787/files - new: https://git.openjdk.org/jdk/pull/18787/files/dc488f21..47100a28 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=18787&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=18787&range=01-02 Stats: 69237 lines in 1984 files changed: 31363 ins; 31713 del; 6161 mod Patch: https://git.openjdk.org/jdk/pull/18787.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/18787/head:pull/18787 PR: https://git.openjdk.org/jdk/pull/18787
Re: RFR: 8331331: :tier1 target explanation in doc/testing.md is incorrect
On Mon, 29 Apr 2024 16:14:45 GMT, SendaoYan wrote: > Hi, > > In doc/testing.md file, it says: > > As an example, :tier1 will expand to jtreg:$(TOPDIR)/test/hotspot/jtreg:tier1 > jtreg:$(TOPDIR)/test/jdk:tier1 jtreg:$(TOPDIR)/test/langtools:tier1 > jtreg:$(TOPDIR)/test/nashorn:tier1 jtreg:$(TOPDIR)/test/jaxp:tier1. > > The actual situation is :tier1 doesn't contains test/nashorn:tier1, and the > document missed test/lib-test:tier1 > > $ make -n test-tier1 &> test-tier1.log > $ grep "Running test " test-tier1.log > Running test 'jtreg:test/hotspot/jtreg:tier1' > Running test 'jtreg:test/jdk:tier1' > Running test 'jtreg:test/langtools:tier1' > Running test 'jtreg:test/jaxp:tier1' > Running test 'jtreg:test/lib-test:tier1' > > Only change the document, no risk. Marked as reviewed by erikj (Reviewer). - PR Review: https://git.openjdk.org/jdk/pull/19002#pullrequestreview-2029396718
Re: RFR: 8298405: Implement JEP 467: Markdown Documentation Comments [v59]
> Please review a patch to add support for Markdown syntax in documentation > comments, as described in the associated JEP. > > Notable features: > > * support for `///` documentation comments in `JavaTokenizer` > * new module `jdk.internal.md` -- a private copy of the `commonmark-java` > library > * updates to `DocCommentParser` to treat `///` comments as Markdown > * updates to the standard doclet to render Markdown comments in HTML Jonathan Gibbons has updated the pull request incrementally with one additional commit since the last revision: Remove links to `jdk.javadoc` module from `java.compiler` module` - Changes: - all: https://git.openjdk.org/jdk/pull/16388/files - new: https://git.openjdk.org/jdk/pull/16388/files/a884ae36..fadc130b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=16388&range=58 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16388&range=57-58 Stats: 9 lines in 1 file changed: 0 ins; 5 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/16388.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/16388/head:pull/16388 PR: https://git.openjdk.org/jdk/pull/16388
Re: RFR: 8331164: createJMHBundle.sh download jars fail when url needed to be redirected
On Fri, 26 Apr 2024 03:32:25 GMT, SendaoYan wrote: > Hi, > > The curl command lack of "-L" option, cause download file fail, the size of > download file is empty. > > curl download fail without `-L`: >```log >> rm -rf jmh-core-1.37.jar ; curl -O --fail >> https://maven.aliyun.com/repository/public/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar >> ; ls -lh jmh-core-1.37.jar ; du -sh jmh-core-1.37.jar > % Total% Received % Xferd Average Speed TimeTime Time > Current > Dload Upload Total SpentLeft Speed > 0 00 00 0 0 0 --:--:-- --:--:-- --:--:-- 0 > -rw-rw-r-- 1 yansendao yansendao 0 Apr 26 17:37 jmh-core-1.37.jar > 0 jmh-core-1.37.jar > > > curl download success with `-L`: > >> rm -rf jmh-core-1.37.jar ; curl -OL --fail >> https://maven.aliyun.com/repository/public/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar >> ; ls -lh jmh-core-1.37.jar ; du -sh jmh-core-1.37.jar > % Total% Received % Xferd Average Speed TimeTime Time > Current > Dload Upload Total SpentLeft Speed > 0 00 00 0 0 0 --:--:-- --:--:-- --:--:-- 0 > 100 540k 100 540k0 0 1097k 0 --:--:-- --:--:-- --:--:-- 1097k > -rw-rw-r-- 1 yansendao yansendao 541K Apr 26 17:38 jmh-core-1.37.jar > 544Kjmh-core-1.37.jar > > > > Only change devkit shell script, the risk is low. > /sponsor @shipilev Thanks. - PR Comment: https://git.openjdk.org/jdk/pull/18965#issuecomment-2083317843
Re: RFR: 8331164: createJMHBundle.sh download jars fail when url needed to be redirected
On Fri, 26 Apr 2024 03:32:25 GMT, SendaoYan wrote: > Hi, > > The curl command lack of "-L" option, cause download file fail, the size of > download file is empty. > > curl download fail without `-L`: >```log >> rm -rf jmh-core-1.37.jar ; curl -O --fail >> https://maven.aliyun.com/repository/public/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar >> ; ls -lh jmh-core-1.37.jar ; du -sh jmh-core-1.37.jar > % Total% Received % Xferd Average Speed TimeTime Time > Current > Dload Upload Total SpentLeft Speed > 0 00 00 0 0 0 --:--:-- --:--:-- --:--:-- 0 > -rw-rw-r-- 1 yansendao yansendao 0 Apr 26 17:37 jmh-core-1.37.jar > 0 jmh-core-1.37.jar > > > curl download success with `-L`: > >> rm -rf jmh-core-1.37.jar ; curl -OL --fail >> https://maven.aliyun.com/repository/public/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar >> ; ls -lh jmh-core-1.37.jar ; du -sh jmh-core-1.37.jar > % Total% Received % Xferd Average Speed TimeTime Time > Current > Dload Upload Total SpentLeft Speed > 0 00 00 0 0 0 --:--:-- --:--:-- --:--:-- 0 > 100 540k 100 540k0 0 1097k 0 --:--:-- --:--:-- --:--:-- 1097k > -rw-rw-r-- 1 yansendao yansendao 541K Apr 26 17:38 jmh-core-1.37.jar > 544Kjmh-core-1.37.jar > > > > Only change devkit shell script, the risk is low. Marked as reviewed by shade (Reviewer). - PR Review: https://git.openjdk.org/jdk/pull/18965#pullrequestreview-2029168618
Integrated: 8331164: createJMHBundle.sh download jars fail when url needed to be redirected
On Fri, 26 Apr 2024 03:32:25 GMT, SendaoYan wrote: > Hi, > > The curl command lack of "-L" option, cause download file fail, the size of > download file is empty. > > curl download fail without `-L`: >```log >> rm -rf jmh-core-1.37.jar ; curl -O --fail >> https://maven.aliyun.com/repository/public/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar >> ; ls -lh jmh-core-1.37.jar ; du -sh jmh-core-1.37.jar > % Total% Received % Xferd Average Speed TimeTime Time > Current > Dload Upload Total SpentLeft Speed > 0 00 00 0 0 0 --:--:-- --:--:-- --:--:-- 0 > -rw-rw-r-- 1 yansendao yansendao 0 Apr 26 17:37 jmh-core-1.37.jar > 0 jmh-core-1.37.jar > > > curl download success with `-L`: > >> rm -rf jmh-core-1.37.jar ; curl -OL --fail >> https://maven.aliyun.com/repository/public/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar >> ; ls -lh jmh-core-1.37.jar ; du -sh jmh-core-1.37.jar > % Total% Received % Xferd Average Speed TimeTime Time > Current > Dload Upload Total SpentLeft Speed > 0 00 00 0 0 0 --:--:-- --:--:-- --:--:-- 0 > 100 540k 100 540k0 0 1097k 0 --:--:-- --:--:-- --:--:-- 1097k > -rw-rw-r-- 1 yansendao yansendao 541K Apr 26 17:38 jmh-core-1.37.jar > 544Kjmh-core-1.37.jar > > > > Only change devkit shell script, the risk is low. This pull request has now been integrated. Changeset: eb88343f Author:SendaoYan Committer: Aleksey Shipilev URL: https://git.openjdk.org/jdk/commit/eb88343fb763ee89010b7a9879638152decc6892 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod 8331164: createJMHBundle.sh download jars fail when url needed to be redirected Reviewed-by: erikj, shade - PR: https://git.openjdk.org/jdk/pull/18965
Re: RFR: 8330182: Start of release updates for JDK 24 [v2]
On Tue, 23 Apr 2024 07:03:45 GMT, David Holmes wrote: > There are further updates to this test in the pipeline (new deprecated flags > in 23) so you will need to keep updating to reflect that. Thanks @dholmes-ora ; acknowledged. - PR Review Comment: https://git.openjdk.org/jdk/pull/18787#discussion_r1583479535
Re: RFR: 8329257: AIX: Switch HOTSPOT_TOOLCHAIN_TYPE from xlc to gcc [v3]
On Thu, 18 Apr 2024 04:26:21 GMT, Kim Barrett wrote: >> I opened https://bugs.openjdk.org/browse/JDK-8330539 so we don't lose track >> of this, but we can keep the discussion/voting here. > > For the impatient, I suggest adopting mechanism 2, i.e. unconditionally > include in globalDefinitions_gcc.hpp. > > We can't include in shared code, and there is a use in shared code > (in the relatively recently added JavaThread::pretouch_stack). > > When I questioned whether we needed to include at all, I referred > to a Linux man page I'd found on the internet (the same page mdoerr linked > to), which says (in part) > > "By default, modern compilers automatically translate all uses of alloca() > into the built-in ..." > > Apparently I should have kept digging, because it seems that page is > old/incorrect. A seemingly more recent Linux man page describes a different > way of handling it that is closer to what we're seeing, but still not quite > correct. > > glibc's includes if __USE_MISC is defined. > One of the ways __USE_MISC can become defined is if _GNU_SOURCE is defined, > and we define that for both gcc and clang toolchains. > > We include in globalDefinitions_gcc.hpp. So when building with gcc, > globalDefinitions.hpp implicitly includes . > > The glibc definition of alloca is > > #ifdef__GNUC__ > # define alloca(size) __builtin_alloca (size) > #endif /* GCC. */ > > So that explains why we don't need any explicit include of when > building with gcc. I expect there's something similar going on with Visual > Studio and Xcode/clang. But apparently not with Open XLC clang. On AIX `stdlib.h` also would define `alloca`, if `__STRICT_ANSI__` wouldn't be set. 780 #if !defined(__xlC__) || defined(__ibmxl__) || defined(__cplusplus) 781 #if defined(__IBMCPP__) && !defined(__ibmxl__) 782extern "builtin" char *__alloca (size_t); 783 # define alloca __alloca 784 #elif defined(__GNUC__) && !defined(__STRICT_ANSI__) 785#undef alloca 786#define alloca(size) __builtin_alloca (size) 787 #endif A small plain Testprogramm not using all of the flags we used in jdk build, does not set `__STRICT_ANSI__` and then `alloca` is defined correct. - PR Review Comment: https://git.openjdk.org/jdk/pull/18536#discussion_r1583360569
RFR: 8331331: :tier1 target explanation in doc/testing.md is incorrect
Hi, In doc/testing.md file, it says: As an example, :tier1 will expand to jtreg:$(TOPDIR)/test/hotspot/jtreg:tier1 jtreg:$(TOPDIR)/test/jdk:tier1 jtreg:$(TOPDIR)/test/langtools:tier1 jtreg:$(TOPDIR)/test/nashorn:tier1 jtreg:$(TOPDIR)/test/jaxp:tier1. The actual situation is :tier1 doesn't contains test/nashorn:tier1, and the document missed test/lib-test:tier1 $ make -n test-tier1 &> test-tier1.log $ grep "Running test " test-tier1.log Running test 'jtreg:test/hotspot/jtreg:tier1' Running test 'jtreg:test/jdk:tier1' Running test 'jtreg:test/langtools:tier1' Running test 'jtreg:test/jaxp:tier1' Running test 'jtreg:test/lib-test:tier1' Only change the document, no risk. - Commit messages: - 8331331 :tier1 target explanation in doc/testing.md is incorrect Changes: https://git.openjdk.org/jdk/pull/19002/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19002&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8331331 Stats: 2 lines in 2 files changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/19002.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/19002/head:pull/19002 PR: https://git.openjdk.org/jdk/pull/19002
Re: RFR: 8331298: avoid alignment checks in UBSAN enabled build
On Mon, 29 Apr 2024 12:15:55 GMT, Matthias Baesken wrote: > Currently we run into some alignment related issues when building with > '--enable-ubsan' . Those errors already occur in the build. Fixing them might > take some time and maybe also some discussion if it is worth the effort , > So for now the alignment related checks should be disabled to get the UBSAN > build working. > Example : > > /jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:128:13: runtime error: store > to misaligned address 0x15099c3cf4ce for type 'int', which requires 4 byte > alignment > 0x15099c3cf4ce: note: pointer points here > 00 80 0f 86 00 00 00 00 3d 06 00 00 80 76 60 3d 07 00 00 80 76 40 3d 08 00 > 00 80 76 20 3d 1e 00 > ^ > #0 0x1509b3b04f10 in MacroAssembler::pd_patch_instruction(unsigned char*, > unsigned char*, char const*, int) > /jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:128 > #1 0x1509b3b04f10 in Label::patch_instructions(MacroAssembler*) > /jdk/src/hotspot/share/asm/assembler.cpp:201 > #2 0x1509b940b6d8 in VM_Version_StubGenerator::generate_get_cpu_info() > /jdk/src/hotspot/cpu/x86/vm_version_x86.cpp:381 > #3 0x1509b94059bd in VM_Version::initialize() > /jdk/src/hotspot/cpu/x86/vm_version_x86.cpp:2138 > #4 0x1509b93fb56e in VM_Version_init() > /jdk/src/hotspot/share/runtime/vm_version.cpp:32 > #5 0x1509b61ef947 in init_globals() > /jdk/src/hotspot/share/runtime/init.cpp:126 > #6 0x1509b8fb0e29 in Threads::create_vm(JavaVMInitArgs*, bool*) > /jdk/src/hotspot/share/runtime/threads.cpp:553 > #7 0x1509b67da3d7 in JNI_CreateJavaVM_inner > /jdk/src/hotspot/share/prims/jni.cpp:3581 > #8 0x1509b67da3d7 in JNI_CreateJavaVM > /jdk/src/hotspot/share/prims/jni.cpp:3672 > #9 0x1509c0eed957 in InitializeJVM > /jdk/src/java.base/share/native/libjli/java.c:1550 > #10 0x1509c0eed957 in JavaMain > /jdk/src/java.base/share/native/libjli/java.c:491 >... (rest of output omitted) I wish we could fix all UB, but that seems unrealistic for the time being. LGTM. - Marked as reviewed by mdoerr (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/18998#pullrequestreview-2028402095
Re: RFR: 8331298: avoid alignment checks in UBSAN enabled build
On Mon, 29 Apr 2024 12:15:55 GMT, Matthias Baesken wrote: > Currently we run into some alignment related issues when building with > '--enable-ubsan' . Those errors already occur in the build. Fixing them might > take some time and maybe also some discussion if it is worth the effort , > So for now the alignment related checks should be disabled to get the UBSAN > build working. > Example : > > /jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:128:13: runtime error: store > to misaligned address 0x15099c3cf4ce for type 'int', which requires 4 byte > alignment > 0x15099c3cf4ce: note: pointer points here > 00 80 0f 86 00 00 00 00 3d 06 00 00 80 76 60 3d 07 00 00 80 76 40 3d 08 00 > 00 80 76 20 3d 1e 00 > ^ > #0 0x1509b3b04f10 in MacroAssembler::pd_patch_instruction(unsigned char*, > unsigned char*, char const*, int) > /jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:128 > #1 0x1509b3b04f10 in Label::patch_instructions(MacroAssembler*) > /jdk/src/hotspot/share/asm/assembler.cpp:201 > #2 0x1509b940b6d8 in VM_Version_StubGenerator::generate_get_cpu_info() > /jdk/src/hotspot/cpu/x86/vm_version_x86.cpp:381 > #3 0x1509b94059bd in VM_Version::initialize() > /jdk/src/hotspot/cpu/x86/vm_version_x86.cpp:2138 > #4 0x1509b93fb56e in VM_Version_init() > /jdk/src/hotspot/share/runtime/vm_version.cpp:32 > #5 0x1509b61ef947 in init_globals() > /jdk/src/hotspot/share/runtime/init.cpp:126 > #6 0x1509b8fb0e29 in Threads::create_vm(JavaVMInitArgs*, bool*) > /jdk/src/hotspot/share/runtime/threads.cpp:553 > #7 0x1509b67da3d7 in JNI_CreateJavaVM_inner > /jdk/src/hotspot/share/prims/jni.cpp:3581 > #8 0x1509b67da3d7 in JNI_CreateJavaVM > /jdk/src/hotspot/share/prims/jni.cpp:3672 > #9 0x1509c0eed957 in InitializeJVM > /jdk/src/java.base/share/native/libjli/java.c:1550 > #10 0x1509c0eed957 in JavaMain > /jdk/src/java.base/share/native/libjli/java.c:491 >... (rest of output omitted) Marked as reviewed by erikj (Reviewer). - PR Review: https://git.openjdk.org/jdk/pull/18998#pullrequestreview-2028396835
RFR: 8331298: avoid alignment checks in UBSAN enabled build
Currently we run into some alignment related issues when building with '--enable-ubsan' . Those errors already occur in the build. Fixing them might take some time and maybe also some discussion if it is worth the effort , So for now the alignment related checks should be disabled to get the UBSAN build working. Example : /jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:128:13: runtime error: store to misaligned address 0x15099c3cf4ce for type 'int', which requires 4 byte alignment 0x15099c3cf4ce: note: pointer points here 00 80 0f 86 00 00 00 00 3d 06 00 00 80 76 60 3d 07 00 00 80 76 40 3d 08 00 00 80 76 20 3d 1e 00 ^ #0 0x1509b3b04f10 in MacroAssembler::pd_patch_instruction(unsigned char*, unsigned char*, char const*, int) /jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:128 #1 0x1509b3b04f10 in Label::patch_instructions(MacroAssembler*) /jdk/src/hotspot/share/asm/assembler.cpp:201 #2 0x1509b940b6d8 in VM_Version_StubGenerator::generate_get_cpu_info() /jdk/src/hotspot/cpu/x86/vm_version_x86.cpp:381 #3 0x1509b94059bd in VM_Version::initialize() /jdk/src/hotspot/cpu/x86/vm_version_x86.cpp:2138 #4 0x1509b93fb56e in VM_Version_init() /jdk/src/hotspot/share/runtime/vm_version.cpp:32 #5 0x1509b61ef947 in init_globals() /jdk/src/hotspot/share/runtime/init.cpp:126 #6 0x1509b8fb0e29 in Threads::create_vm(JavaVMInitArgs*, bool*) /jdk/src/hotspot/share/runtime/threads.cpp:553 #7 0x1509b67da3d7 in JNI_CreateJavaVM_inner /jdk/src/hotspot/share/prims/jni.cpp:3581 #8 0x1509b67da3d7 in JNI_CreateJavaVM /jdk/src/hotspot/share/prims/jni.cpp:3672 #9 0x1509c0eed957 in InitializeJVM /jdk/src/java.base/share/native/libjli/java.c:1550 #10 0x1509c0eed957 in JavaMain /jdk/src/java.base/share/native/libjli/java.c:491 ... (rest of output omitted) - Commit messages: - JDK-8331298 Changes: https://git.openjdk.org/jdk/pull/18998/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18998&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8331298 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/18998.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/18998/head:pull/18998 PR: https://git.openjdk.org/jdk/pull/18998