Python3 TensorFlow + Librosa脚本-从子流程生成时出现段错误(Python 2.7)

时间:2019-06-05 07:17:59

标签: python tensorflow segmentation-fault subprocess librosa

我正在Freeswitch之上开发Python 2.7,但需要一些Python3代码进行音频分类(使用Tensorflow和Librosa进行特征提取的机器学习)。

当我以root用户身份从命令行运行Python3脚本时,它会按预期运行。

当从子进程(从python 2.7执行)调用脚本时,它会发生段错误。 Python正在执行的用户与命令行不同,因此我按以下方式执行命令以确保从同一用户执行(具有完整的sudo权限):

cmd = 'echo $PASSWORD| sudo -u root -S python3  -Xfaulthandler /usr/share/freeswitch/class/train.py '+str(uuid2)
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
    output = p.stdout.read()

输出:

NG:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
2019-06-05 05:41:43.715213: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-06-05 05:41:43.720328: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 1999995000 Hz
2019-06-05 05:41:43.720756: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x559fd3827ad0 executing computations on platform Host. Devices:
2019-06-05 05:41:43.720778: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (0): <undefined>, <undefined>
WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Fatal Python error: Segmentation fault

Current thread 0x00007fae74f76700 (most recent call first):
  File "/usr/local/lib/python3.5/dist-packages/librosa/feature/spectral.py", line 1536 in melspectrogram
  File "/usr/local/lib/python3.5/dist-packages/librosa/feature/spectral.py", line 1442 in mfcc
  File "/usr/local/lib/python3.5/dist-packages/pyaudioclassification/feat_extract.py", line 20 in extract_feature
  File "/usr/local/lib/python3.5/dist-packages/pyaudioclassification/feat_extract.py", line 56 in get_ext_features
  File "/usr/local/lib/python3.5/dist-packages/pyaudioclassification/feat_extract.py", line 68 in parse_audio_file
  File "/usr/local/lib/python3.5/dist-packages/pyaudioclassification/__init__.py", line 61 in predict
  File "/usr/share/freeswitch/class/train.py", line 36 in classify
  File "/usr/share/freeswitch/class/train.py", line 42 in <module>
Segmentation fault
  1. 我已经检查了输入音频文件(777)的文件权限

  2. Stress在另一个TTY上运行train.py时测试了Freeswitch 终端(按预期方式工作,因此不会出现内存问题)

  3. 为音频预处理增加了额外的延迟
  4. 使用预先录制的剪辑进行测试(子流程中的段故障,CLI中有效)
  5. 减少到仅执行1次(而不是重复执行多个文件)
  6. 试图使用os.system>生成到文件(输出是空的,尽管文件已创建?)
  7. 试图将close_fds更改为true
  8. 已检查printenv
  9. 检查了ulimit -a(此处与CLI / 子过程相比有所不同:

    子进程ulimit -a:

    '无限 文件(块)无限 数据(千字节)无限 堆栈(KB)240 coredump(块)无限 内存(千字节)无限 锁定内存(千字节)64 过程无限 无文件999999 vmemory(kbytes)无限 无限锁定 rtprio无限'

    来自终端的命令:

    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 64117
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 64117
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    

我很想在这里寻找答案,我已经没有足够的尝试机会了。

0 个答案:

没有答案