Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-6587

Remove RTLD_LOCAL

    Details

    • Type: Bug
    • Status: Done
    • Priority: Major
    • Resolution: Done
    • Fix Version/s: None
    • Component/s: base
    • Labels:
      None
    • Templates:
    • Story Points:
      0.25
    • Epic Link:
    • Sprint:
      DRP F16-1
    • Team:
      Data Release Production

      Description

      Mario Juric writes:

      The recent convenience functions & checks you merged into base break MKL on OS X. I traced it down the other night and your code requires a one-word change (removal of RTLD_LOCAL).

      Could you plug that in when you get a chance?

      PS: The problem is that on OS X, apparently once you load a library with RTLD_LOCAL, it will remain local even when it’s subsequently auto-loaded as a dependency of another library (which then won’t be able to find the symbols it needs, ergo the error message). In particular, the issue here is that running:

      getMklThreads = loadSymbol<Getter>("libiomp5", "omp_get_max_threads");
      

      loads libiomp5 as RTLD_LOCAL, and then the next time when the linker needs it (when loading MKL-enabled numpy on OS X, which is linked against libmkl_core, which itself is linked against libiomp5) it doesn’t find its symbols.

      I need to check that this won't break things on Linux.

        Attachments

          Container Issues

            Issue Links

              Activity

                People

                • Assignee:
                  price Paul Price
                  Reporter:
                  price Paul Price
                  Reviewers:
                  Tim Jenness
                  Watchers:
                  John Swinbank, Mario Juric, Paul Price, Tim Jenness
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:

                    Summary Panel