Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4726812

[1.3.1_04] recursion in -server compiler exhausts stack, crashes. see workaround

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      1.4
    • CPU:
      x86, sparc
    • OS:
      linux, solaris_8

      Backports

        Description

        A customer application developed with JIntegra from Intrinsyc
        ( http://www.intrinsyc.com/ ) crashes JVMs 1.3.x and 1.4, when using the -server compiler.

        core 'core.kevin.sr' of 16853: /net/cafebabe.uk/export/apps/products/java/jdk/prodn/1.3.1_04/bin/../b
        ----------------- lwp# 36 / thread# 12 --------------------
         fe0bd4c0 void*os::thread_local_storage_at(int) (1, fe4ce000, 0, 0, 0, 0) + 20
         fe0b5160 Thread*ThreadLocalStorage::get_thread_via_cache() (fe4e7538, 20, f2587, fe4ce000, f1208, f2587fac)
        + 70
         fe0bef3c Node::Node #Nvariant 1(unsigned) (2187c0, 3, f2588, fe4ce000, e1798, f258800c) + 20
         fe11cb4c Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 134
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384ef0, 3845e8, 38
        9074, f2780984, f2780980) + 198
         fe11cbb0 Node*PhaseIdealLoop::spinup(Node*,Node*,Node*,Node*&,Node*&,Node*,Node*) (bc110, 384e38, 3845e8, 38
        9074, f2780984, f2780980) + 198
        .
        .
        ...truncated here, but PhaseIdealLoop::spinup appears 19872 times in pstack output on core file.

        Full pstack, core file, showrev -p output attached.

        To Reproduce:
        ============
        Unpack xchanging.tar (attached) on Solaris machine with Java 1.3.1_04.
        An NT/Windows 2000 machine is required - the JIntegra product demonstrates a DCOM interface to Windows.
        Edit the script test.sh: attached separate to the tar file is one with the fields to change (Win 2K hostname, domainname, password) in caps.

        On the NT/Windows 2000 machine:
        Add a user called "dcom" in the domain of the NT machine.
        On the command line (Start/Run/command) run "dcomcnfg" - go to the default security tab. Allow user "dcom" to have full default access and default launch permissions.

        Run test.sh on the Solaris machine. As attached, it will log compilation and should crash/core dump.

        Example output: (order may vary due to thread scheduling, final method has always been the same, and can be avoided to avoid crash)
        .
        .
        .
         91 b java.lang.Character::digit (102 bytes)
         92 b com.linar.jintegra.cb::a (186 bytes)
         93 b com.linar.jintegra.PureAuth::toString (23 bytes)
        VacancyCreatorThread: Initialising thread '23' Start: '1028628299008'
         94 !b com.linar.jintegra.Marshaller::b (418 bytes)
        VacancyCreatorThread: Initialising thread '24' Start: '1028628300228'
         95 b com.linar.jintegra.u::a (159 bytes)
        ./test.sh[26]: 5662 Segmentation Fault(coredump)


          Attachments

            Issue Links

              Activity

                People

                Assignee:
                mpalecznsunw Michael Paleczny (Inactive)
                Reporter:
                kevinw Kevin Walls
                Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: