我有一个在 Raspberry Pi 3 上运行的 Python 2.7 脚本。
class UIThread(threading.Thread):
def __init__(self, threadID, name, counter, U):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
self.U = U
def run(self):
self.U.run()
def main():
time.sleep(3)
try:
try:
###launch a UI running as background thread#####
U = UIlib.UI()
thread1 = UIThread(1, "UI", 1, U)
thread1.daemon = True
thread1.start()
except:
###if there is no monitor, lanch a fake UI class#######
U = UIlib.nomonitorUI()
thread1 = UIThread(1, "NMUI", 1, U)
thread1.daemon = True
thread1.start()
print "No Monitor detected"
pass
####perform interaction with the BQ chip, contain a while true loop######
char_balan(U)
except:
e = sys.exc_info()
print e
print "UI exit"
基本上它的功能是通过UART向芯片发送信息,获取响应信息,更新日志文件并将其打印到UI(由python curses创建的显示在监视器上的UI)中。 它每隔1秒执行一次。
该脚本没有错误,运行了32小时后崩溃。 UI崩溃并且覆盖了错误消息:“无法打开shsh:加载共享库时出错:libc.so.6:无法打开共享对象文件...” 我已经谷歌了这个消息,但没有找到与我的python脚本相关的任何内容。
我已经检查了树莓派的内存状态。 在第32小时,python进程使用了大约总内存的1/4。 因此,不是内存导致崩溃。 此外,我尝试过不使用监视器运行它,这将启动一个假的UI类而没有python.curses。 在第32小时发生了相同的崩溃。
现在,我不知道为什么脚本会崩溃。
libc
,还是glibc
? - jmunschlsof -i $PID
的输出,它是否打开了太多的文件描述符?错误退出代码号码是24
吗? - jmunsch