Uploaded image for project: 'Kudu'
  1. Kudu
  2. KUDU-3404

glog 0.6.0 increases the TLS usage of libkudu_client.so substantially

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 1.17.0
    • 1.17.0
    • client
    • None

    Description

      Glog 0.4 introduced supported for using thread local storage for its buffer. This feature is controlled by the WITH_TLS CMake variable, and it defaults to ON. See https://github.com/google/glog/commit/2df0ca34aa3000dadf76633ca700abf0bf50756d . When Kudu upgraded to glog 0.6.0 as part of the M1 fixes in "KUDU-3374 Add support for M1 and macOS Monterey", it increased the thread local storage usage by >30000 bytes.

      # Older libkudu_client.so has 0x100 = 256 bytes of TLS:
      $ readelf -l libkudu_client.so | grep "TLS" -A1
        TLS            0x00000000007d14c0 0x00000000007d24c0 0x00000000007d24c0
                       0x0000000000000080 0x0000000000000100  R      0x40
      
      # Newer libkudu_client.so has 0x77b9 = 30649 bytes of TLS:
      $ readelf -l libkudu_client.so.0 | grep TLS -A1
        TLS            0x0000000000751280 0x0000000000752280 0x0000000000752280
                       0x0000000000000080 0x00000000000077b9  R      40

      This is a problem for Impala, because Impala starts a JVM. There are certain JVM threads (like the "reaper thread") that have very small stacks (e.g. 32KB) and with glibc the TLS space is allocated at the expense of stack space. 30k of TLS usage leaves very little for the reaper thread. There are a series of bugs where the Java reaper thread hits a StackOverflowException because of high TLS usage. This can cause various symptoms including hangs.

      GLIBC message thread: https://sourceware.org/bugzilla/show_bug.cgi?id=11787

      JDK bugs:  JDK-8217475JDK-8225035

      To resolve Impala's problem, it would be useful to build libkudu_client.so with glog's WITH_TLS=OFF.

      Attachments

        Activity

          People

            mgreber Marton Greber
            joemcdonnell Joe McDonnell
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: