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

Get FATAL ERROR in native PlainDatagramSocketImpl code: wrong method ID passed t

XMLWordPrintable

    • 1.2beta2
    • sparc
    • solaris_2.6
    • Not verified

      When running my UDP test again using green threads and the udpServer dies with the following fatal error when using a 1K buffer size. It dies
      with a different error (SIGBUS) when using a 3K or greater buffer size. With native threads it passes with a buffer size of 1name breK or 2K. Once the buffer size is 3K or greater both native threads and green threads it dies with a SIGSEGV or SIGBUS error.

      This bug happend using JDK1.2T on a SOLARIS 2.6 ULTRA SPARC Workstation.

      I added the test program that reproduces this problem.

      >% java udpServer -d -v -l 0
      >% java udpClient -d -v -b 1 -c -l 100
      >
      >----------------
      >SERVER DIES WITH
      >----------------
      >VERBOSE: port number is = 26000
      >VERBOSE: loop count is = 0
      >DEBUG: DATAGRAM SOCKET INFO
      >DEBUG: --------------------
      >DEBUG: getLocalPort() = 26000
      >DEBUG: getSoTimeout() = 0
      >DEBUG: Dump getLocalAddress()
      >DEBUG: INET ADDRESS INFO
      >DEBUG: -----------------
      >DEBUG: getHostName() = 0.0.0.0
      >DEBUG: getAllByName[0] = 0.0.0.0/0.0.0.0
      >DEBUG: getByName() = 0.0.0.0/0.0.0.0
      >DEBUG: getLocalHost() = lobo/129.148.27.228
      >DEBUG: FIX: getAddress() =
      >DEBUG: getHostAddress() = 0.0.0.0
      >DEBUG: isMulticastAddress() = false
      >DEBUG: read datagram message from lobo/129.148.27.228 at port 35390 length
      = 1024
      >FATAL ERROR in native code: wrong method ID passed to NewObject
      > at java.net.PlainDatagramSocketImpl.receive(Native Method)
      > at java.net.DatagramSocket.receive(DatagramSocket.java:223)
      > at udpServer.<init>(udpServer.java:86)
      > at udpServer.main(udpServer.java:60)
      >SIGABRT 6* abort (generated by abort(3) routine)
      > si_signo [6]: SIGABRT 6* abort (generated by abort(3) routine)
      > si_errno [0]: Error 0
      > si_code [-1]: SI_LWP [pid: 6199, uid: 71133]
      > stackbase=F0000000, stackpointer=EFFFDDE0
      >
      >Full thread dump:
      > "CachedReference sweeper" (TID:0xee300d30, sys_thread_t:0x106468,
      state:CW) prio=9
      > at java.lang.Object.wait(Native Method)
      > at java.lang.Object.wait(Object.java:309)
      > at java.lang.Runtime.waitForMemoryAdvice(Runtime.java:569)
      > at
      java.lang.ref.CachedReference$Sweeper.run(CachedReference.java:279)
      > at java.lang.Thread.run(Thread.java:472)
      > "Finalizer" (TID:0xee300368, sys_thread_t:0xa72f0, state:CW) prio=8
      > at java.lang.Object.wait(Native Method)
      > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:85)
      > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:98)
      > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:131)
      > "Reference handler" (TID:0xee300418, sys_thread_t:0xf7918, state:CW)
      prio=10
      > at java.lang.Object.wait(Native Method)
      > at java.lang.Object.wait(Object.java:309)
      > at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:197)
      > "Async Garbage Collector" (TID:0xee3001f8, sys_thread_t:0xa3318,
      state:CW) prio=1
      > "Idle thread" (TID:0xee300240, sys_thread_t:0xa3210, state:R) prio=0
      > "Clock" (TID:0xee300088, sys_thread_t:0xa3e08, state:CW) prio=12
      > "main" (TID:0xee3000b0, sys_thread_t:0x209f8, state:R) prio=5 *current
      thread*
      > at java.net.PlainDatagramSocketImpl.receive(Native Method)
      > at java.net.DatagramSocket.receive(DatagramSocket.java:223)
      > at udpServer.<init>(udpServer.java:86)
      > at udpServer.main(udpServer.java:60)
      >Monitor Cache Dump:
      > java.net.DatagramPacket@EE302080/EE366728: owner "main" (0x209f8, 1
      entry)
      > java.net.DatagramSocket@EE301280/EE377240: owner "main" (0x209f8, 1
      entry)
      > java.net.PlainDatagramSocketImpl@EE301278/EE363890: owner "main"
      (0x209f8, 1 entry)
      >Registered Monitor Dump:
      > utf8 hash table: <unowned>
      > JNI pinning lock: <unowned>
      > JNI global reference lock: <unowned>
      > BinClass lock: <unowned>
      > Class linking lock: <unowned>
      > Code rewrite lock: <unowned>
      > Heap lock: <unowned>
      > Monitor IO lock: <unowned>
      > Child death monitor: <unowned>
      > Event monitor: <unowned>
      > I/O monitor: <unowned>
      > Alarm monitor: <unowned>
      > Waiting to be notified:
      > "Clock" (0xa3e08)
      > Sbrk lock: <unowned>
      > Monitor cache expansion lock: <unowned>
      > Thread queue lock: <unowned>
      > Monitor registry: owner "main" (0x209f8, 1 entry)
      >Thread Alarm Q:
      > sys_thread_t 0xa3318 [Timeout in 516 ms]
      >Abort

      >% java udpServer -d -v -l 0
      >% java udpClient -d -v -b 3 -c -l 100
      >
      >----------------
      >SERVER DIES WITH
      >----------------
      >java udpServer -d -v -l 0
      >VERBOSE: port number is = 26000
      >VERBOSE: loop count is = 0
      >DEBUG: DATAGRAM SOCKET INFO
      >DEBUG: --------------------
      >DEBUG: getLocalPort() = 26000
      >DEBUG: getSoTimeout() = 0
      >DEBUG: Dump getLocalAddress()
      >DEBUG: INET ADDRESS INFO
      >DEBUG: -----------------
      >DEBUG: getHostName() = 0.0.0.0
      >DEBUG: getAllByName[0] = 0.0.0.0/0.0.0.0
      >DEBUG: getByName() = 0.0.0.0/0.0.0.0
      >DEBUG: getLocalHost() = lobo/129.148.27.228
      >DEBUG: FIX: getAddress() =
      >DEBUG: getHostAddress() = 0.0.0.0
      >DEBUG: isMulticastAddress() = false
      >SIGBUS 10* bus error
      > si_signo [10]: SIGBUS 10* bus error
      > si_errno [0]: Error 0
      > si_code [1]: BUS_ADRALN [addr: 0x53545566]
      >
      > stackbase=F0000000, stackpointer=EFFFDD78
      >
      >Full thread dump:
      > "CachedReference sweeper" (TID:0xee300d30, sys_thread_t:0x106468,
      state:CW) prio=9
      > at java.lang.Object.wait(Native Method)
      > at java.lang.Object.wait(Object.java:309)
      > at java.lang.Runtime.waitForMemoryAdvice(Runtime.java:569)
      > at
      java.lang.ref.CachedReference$Sweeper.run(CachedReference.java:279)
      > at java.lang.Thread.run(Thread.java:472)
      > "Finalizer" (TID:0xee300368, sys_thread_t:0xa72f0, state:CW) prio=8
      > at java.lang.Object.wait(Native Method)
      > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:85)
      > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:98)
      > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:131)
      > "Reference handler" (TID:0xee300418, sys_thread_t:0xf7918, state:CW)
      prio=10
      > at java.lang.Object.wait(Native Method)
      > at java.lang.Object.wait(Object.java:309)
      > at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:197)
      > "Async Garbage Collector" (TID:0xee3001f8, sys_thread_t:0xa3318,
      state:CW) prio=1
      > "Idle thread" (TID:0xee300240, sys_thread_t:0xa3210, state:R) prio=0
      > "Clock" (TID:0xee300088, sys_thread_t:0xa3e08, state:CW) prio=12
      > "main" (TID:0xee3000b0, sys_thread_t:0x209f8, state:R) prio=5 *current
      thread*
      > at java.net.InetAddress.<init>(InetAddress.java:69)
      > at java.net.PlainDatagramSocketImpl.receive(Native Method)
      > at java.net.DatagramSocket.receive(DatagramSocket.java:223)
      > at udpServer.<init>(udpServer.java:86)
      > at udpServer.main(udpServer.java:60)
      >Monitor Cache Dump:
      > java.net.DatagramPacket@EE302080/EE366728: owner "main" (0x209f8, 1
      entry)
      > java.net.DatagramSocket@EE301280/EE377240: owner "main" (0x209f8, 1
      entry)
      > java.net.PlainDatagramSocketImpl@EE301278/EE363890: owner "main"
      (0x209f8, 1 entry)
      >Registered Monitor Dump:
      > utf8 hash table: <unowned>
      > JNI pinning lock: <unowned>
      > JNI global reference lock: <unowned>
      > BinClass lock: <unowned>
      > Class linking lock: <unowned>
      > Code rewrite lock: <unowned>
      > Heap lock: <unowned>
      > Monitor IO lock: <unowned>
      > Child death monitor: <unowned>
      > Event monitor: <unowned>
      > I/O monitor: <unowned>
      > Alarm monitor: <unowned>
      > Waiting to be notified:
      > "Clock" (0xa3e08)
      > Sbrk lock: <unowned>
      > Monitor cache expansion lock: <unowned>
      > Thread queue lock: <unowned>
      > Monitor registry: owner "main" (0x209f8, 1 entry)
      >Thread Alarm Q:
      > sys_thread_t 0xa3318 [Timeout in 744 ms]
      >Abort

            brenaudsunw Benjamin Renaud (Inactive)
            aefreche Alan Frechette (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: