2016-12-15 1 views
7

J'ai un script Python 2.7 en cours d'exécution sur un Raspberry Pi 3.script python se bloque après une longue durée

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" 

Basely ce qu'il fait est d'envoyer un message par UART à une puce, d'obtenir un message de réponse, mise à jour consignez les fichiers et imprimez-les sur l'interface utilisateur (une interface utilisateur s'affiche sur le moniteur créé par les curseurs python). Il le fait toutes les secondes.

Le script n'a pas de bogue en cours d'exécution pendant 32 heures puis il se bloque. L'interface utilisateur est écrasée et recouverte d'un message d'erreur: "impossible d'ouvrir shsh: erreur lors du chargement des bibliothèques partagées: libc.so.6: impossible d'ouvrir le fichier objet partagé ..." J'ai googlé ce message mais je n'ai trouvé aucun élément lié à mon script python

J'ai vérifié l'état de la mémoire du Raspberry Pi. Le processus python utilise environ 1/4 de la mémoire totale à la 32e heure. Ce n'est donc pas la mémoire qui provoque le crash. Aussi, j'ai essayé de l'exécuter sans moniteur, ce qui lancera une fausse classe d'IU sans python.curses. même accident est arrivé à la 32e heure. Maintenant, je n'ai aucune idée de la raison pour laquelle le script se bloque.

+0

@StevenRumbalski oui, c'est une faute de frappe. – flyblade

+0

Quelle version de 'libc' utilisez-vous, ou est-ce' glibc'? – jmunsch

+0

@jmunsch Je ne sais pas grand-chose à ce sujet. Tout ce que j'ai fait était de charger un script python sur un Raspberry Pi 3 avec Rasabian dessus. Et je n'ai rien fait pour le système Linux. – flyblade

Répondre

1

J'ai une pile de 8 pi de framboise fonctionnant comme un seedbox. J'ai rencontré la même erreur et la réponse officielle la plus proche que j'ai reçue de l'un de mes amis développeurs Raspi était que certains noyaux plus anciens ont des bogues incompatibles avec le matériel. La mise à jour de la dernière version de Pixel résoudra votre problème.

+0

Merci pour votre suggestion. J'ai résolu le problème en changeant la structure de mon programme. même si le programme ne plante pas maintenant, mais il fonctionne beaucoup plus lentement maintenant. – flyblade