Uploaded image for project: 'OpenVZ'
  1. OpenVZ
  2. OVZ-5337

[JAVA & CPUS=1] FUTEX_WAKE and FUTEX_CLOCK_REALTIME broken / wait forever?

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Fix Version/s: OpenVZ-legacy
    • Component/s: Containers::Kernel
    • Security Level: Public
    • Environment:
      Operating System: All
      Platform: x86_64 (AMD64)

      Description

      Hi,

      i've seen this bug very often using java based applications in VPS using OpenVZ. Sadly i wasn't able to provide an example with public aivalable software in the past.

      Now i am.

      1st some details:
      1.) CT0 / Hostsystem is running Debian lenny with a custom configured RHEL6 2.6.32-049.5 based kernel
      2.) CT100 is running Debian Squeeze

      I'm able to reproduce these FUTEX hangs using a the minecraft_server.jar. I can reproduce this with OpenJDK and Sun Java JRE (different versions tested).

      I'm starting the minecraft server with:
      ~# java -Xms512M -Xmx850M -jar minecraft_server.jar nogui

      then it seems to start fine but at some point preparing spawn area it just stops. This point is different on every start.

      Example output:
      177 recipes
      27 achievements
      2012-03-05 18:58:19 [INFO] Starting minecraft server version 1.2.3
      2012-03-05 18:58:19 [INFO] Loading properties
      2012-03-05 18:58:19 [INFO] Starting Minecraft server on X:25565
      2012-03-05 18:58:19 [WARNING] **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
      2012-03-05 18:58:19 [WARNING] The server will make no attempt to authenticate usernames. Beware.
      2012-03-05 18:58:19 [WARNING] While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
      2012-03-05 18:58:19 [WARNING] To change this, set "online-mode" to "true" in the server.settings file.
      2012-03-05 18:58:19 [INFO] Preparing level "Lets Mine Together"
      2012-03-05 18:58:19 [INFO] Default game type: 0
      2012-03-05 18:58:20 [INFO] Preparing start region for level 0
      2012-03-05 18:58:21 [INFO] Preparing spawn area: 12%
      2012-03-05 18:58:22 [INFO] Preparing spawn area: 16%
      2012-03-05 18:58:23 [INFO] Preparing spawn area: 24%
      2012-03-05 18:58:24 [INFO] Preparing spawn area: 32%
      2012-03-05 18:58:25 [INFO] Preparing spawn area: 40%
      2012-03-05 18:58:26 [INFO] Preparing spawn area: 52%
      2012-03-05 18:58:27 [INFO] Preparing spawn area: 65%
      2012-03-05 18:58:28 [INFO] Preparing spawn area: 81%


      As strace just shows this:
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 492738000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 542959000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 593345000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 643570000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 694108000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 744438000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 794845000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 845246000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 895815000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0
      [pid 5011] futex(0x162a054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1330974452, 946122000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
      [pid 5011] futex(0x162a028, FUTEX_WAKE_PRIVATE, 1) = 0

      Why do i think this is a bug?
      This is plain simple i've seen exactly this behaviour on totally different java based apps. For example on Amazons AMTU server too. Also this work absolutely fine using an OpenVZ 2.6.18 based kernel.

      Stefan

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              khlebnikov@openvz.org Konstantin Khlebnikov
              Reporter:
              s.priebe@profihost.com Stefan Priebe
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: