来自源的TensorFlow构建,不能包括贡献



我正在从源头构建TF,并且没有麻烦,包括python的贡献。当我尝试使用以下错误访问此模块时,我会得到segfault:

error: _single_image_random_dot_stereograms.so debug map object file '/private/var/tmp/_bazel_mattmurphy/7ec540cd2482edb7e06749c20652a791/execroot/org_tensorflow/bazel-out/darwin-dbg/bin/tensorflow/contrib/image/_objs/python/ops/_single_image_random_dot_stereograms.so/tensorflow/contrib/image/kernels/single_image_random_dot_stereograms_ops.o' has changed (actual time is 2018-04-23 12:26:04.000000000, debug map time is 2018-04-21 20:47:03.000000000) since this executable was linked, file will be ignored
error: _single_image_random_dot_stereograms.so debug map object file '/private/var/tmp/_bazel_mattmurphy/7ec540cd2482edb7e06749c20652a791/execroot/org_tensorflow/bazel-out/darwin-dbg/bin/tensorflow/contrib/image/_objs/python/ops/_single_image_random_dot_stereograms.so/tensorflow/contrib/image/ops/single_image_random_dot_stereograms_ops.o' has changed (actual time is 2018-04-23 12:26:05.000000000, debug map time is 2018-04-21 20:47:02.000000000) since this executable was linked, file will be ignored
Process 58138 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x48)
    frame #0: 0x0000000131682290 _single_image_random_dot_stereograms.so`google::protobuf::internal::Mutex::Lock(this=0x0000000000000048) at common.cc:376
   373  }
   374
   375  void Mutex::Lock() {
-> 376    int result = pthread_mutex_lock(&mInternal->mutex);
   377    if (result != 0) {
   378      GOOGLE_LOG(FATAL) << "pthread_mutex_lock: " << strerror(result);
   379    }
Target 0: (python) stopped.

看起来这个问题与Protobuf有关,但这很难诊断。

我在使用Xcode 9.3上编译MacOS 10.13.4时观察到相同的问题。

问题在于,protobuf在静态上链接到libtensorflow_framework.so,也链接到_single_image_random_dot_stereograms.solibforestprotos.so中,当导入contrib时,它们会加载。

这里是相关的protobuf问题。

在该问题上的评论说,当使用Xcode 8.3或更高版本编译时出现了问题,因此我认为官方Tensorflow二进制作品,因为它是使用旧版本构建的。

作为解决方法,我本地删除了/tensorflow/tensorflow/tensorflow/contrib/image/BUILD/tensorflow/tensorflow/tensorflow/contrib/tensor_forest/BUILD中的" @protobuf_archive//:protobuf"的两个事件。

这似乎并没有为我在Python中进行本地实验的用例打破任何东西。

相关内容

  • 没有找到相关文章