test/hotspot/jtreg/runtime/StackGap/exestack-gap.c
author epavlova
Thu, 20 Jun 2019 11:42:33 -0700
changeset 55455 76647c08ce0c
parent 49407 7fa5375fa6fd
permissions -rw-r--r--
8225684: [AOT] vmTestbase/vm/oom/production/AlwaysOOMProduction tests fail with AOTed java.base Reviewed-by: kvn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49407
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     1
/*
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     2
 * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     4
 *
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     7
 * published by the Free Software Foundation.
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     8
 *
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    13
 * accompanied this code).
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    14
 *
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    18
 *
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    21
 * questions.
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    22
 */
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    23
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    24
#include <jni.h>
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    25
#include <stdio.h>
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    26
#include <stdlib.h>
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    27
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    28
JNIEnv* create_vm(JavaVM **jvm, char *extra_option)
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    29
{
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    30
    JNIEnv* env;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    31
    JavaVMInitArgs args;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    32
    JavaVMOption options[4];
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    33
    args.version = JNI_VERSION_1_8;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    34
    args.nOptions = 3 + (extra_option != NULL);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    35
    options[0].optionString = "-Xss2048k";
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    36
    char classpath[4096];
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    37
    snprintf(classpath, sizeof classpath,
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    38
             "-Djava.class.path=%s", getenv("CLASSPATH"));
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    39
    options[1].optionString = classpath;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    40
    options[2].optionString = "-XX:+UnlockExperimentalVMOptions";
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    41
    if (extra_option) {
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    42
      options[3].optionString = extra_option;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    43
    }
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    44
    args.options = &options[0];
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    45
    args.ignoreUnrecognized = 0;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    46
    int rv;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    47
    rv = JNI_CreateJavaVM(jvm, (void**)&env, &args);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    48
    if (rv < 0) return NULL;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    49
    return env;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    50
}
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    51
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    52
void run(char *extra_arg) {
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    53
  JavaVM *jvm;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    54
  jclass T_class;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    55
  jmethodID test_method;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    56
  JNIEnv *env = create_vm(&jvm, extra_arg);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    57
  if (env == NULL)
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    58
    exit(1);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    59
  T_class = (*env)->FindClass(env, "T");
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    60
  test_method = (*env)->GetStaticMethodID(env, T_class, "test", "(I)V");
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    61
  (*env)->CallStaticVoidMethod(env, T_class, test_method, 1000);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    62
}
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    63
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    64
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    65
int main(int argc, char **argv)
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    66
{
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    67
  if (argc > 1) {
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    68
    run(argv[1]);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    69
  } else {
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    70
    run(NULL);
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    71
  }
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    72
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    73
  return 0;
7fa5375fa6fd 8197429: Increased stack guard causes segfaults on x86-32
aph
parents:
diff changeset
    74
}