我已经全神贯注地看到了这个错误但却找不到多少。我正在使用Discord.py 1.0.0a与Opus,FFmpeg在Python 3.5.2和OS Ubuntu Server 16.04上运行。机器人将音频剪辑发送到语音通道。偶尔会发生此错误,程序将出现Segmentation Fault,从而留下核心转储。
目前,我的解决方案是一个shell脚本,如果程序崩溃,它会自动重新运行程序。理想情况下,我不想遇到这个问题,但我不知道如何找出这个错误是如何发生的,例如,如果依赖只需要升级,或者它是相对不可避免的。
我真的不想切换到不同的库。
完整的错误是
*** Error in `python3': free(): invalid size: 0x00000000037e3190 ***
Segmentation fault (core dumped)
该代码可在https://github.com/jellywx/soundfx-bot获得
我还在Discord.py GitHub上打开了一个关于此的问题,其中包含GDB跟踪
Thread 604 "python3" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffc6c49700 (LWP 3510)]
__memcpy_avx_unaligned ()
at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:268
268 ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S: No such file or directory.
这个问题可以在这里找到:https://github.com/Rapptz/discord.py/issues/1419
这是另一个用户提供的更完整的跟踪:
Thread 9793 "python3.6" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffe5536b700 (LWP 12840)]
__memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:423
423 ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: No such file or directory.
(gdb) py-bt
Traceback (most recent call first):
File "modules/discord/opus.py", line 273, in encode
ret = _lib.opus_encode(self._state, pcm, frame_size, data, max_data_bytes)
File "modules/discord/voice_client.py", line 410, in send_audio_packet
encoded_data = self.encoder.encode(data, self.encoder.SAMPLES_PER_FRAME)
File "modules/discord/player.py", line 287, in _do_run
play_audio(data, encode=not self.source.is_opus())
File "modules/discord/player.py", line 294, in run
self._do_run()
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/threading.py", line 884, in _bootstrap
self._
bootstrap_inner()
这是在一个不同的主机(KVM,当前是OpenVZ),没有错误,只有一个seg错误。
谢谢你的帮助
发布于 2018-09-27 10:41:27
我还在Discord.py GitHub上打开了一个关于此的问题,其中包含GDB跟踪
backtrace
命令获取实际跟踪。https://stackoverflow.com/questions/-100002755
复制相似问题