IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

bug : Inappropriate ioctl for device


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 12
    Points
    12
    Par défaut bug : Inappropriate ioctl for device
    Bonjour,

    J'ai un code qui génère une erreur de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python2.7: Bad interpolation on P                  ��u=: Inappropriate ioctl for device
    Elle n'est pas systématique et ne se produit que dans certains cas particuliers. Cependant, je n'arrive pas à mettre le doigt sur ce qui la cause dans mon code. Une recherche de cette erreur ne m'a pas vraiment aidé...

    Je ne sais pas vraiment ce que je peux donner comme éléments techniques utiles pour expliquer le problème, voici quelques indications sur la structure du code.

    • Depuis un script principal, je fais un appel à une instance d'une classe (je vais l'appeller classe1) sur laquelle sont exécutées successivement trois méthodes.
      1. La première initie les paramètres et, notamment, crée une liste d'instances d'une seconde classe (que je vais appeller classe2) avec des paramètres spécifiques pour chaque instance.
      2. La seconde fait un appel à une méthode des instances de la liste de classe2 utilisant les variables initiées précédemment.
      3. La troisième met en forme les résultats produits par l'appel à la méthode précédente et stockées dans des variables des instances de classe2.
    • Dans la classe2, je fais appel à une librairie obspy (obspy.taup) pour effectuer un calcul de temps de trajet de signal sismique.

    C'est depuis l'implémentation de cette librairie qu'est apparu ce problème. Auparavant le calcul se faisait via un appel à une librairie java (TauP).
    Dans certains cas, lorsque j'ai 2 (ou plus) instances de la classe2 dans la liste, l'erreur est générée.
    Elle n'est générée que pour certaines combinaisons d'instances de la classe2 et n'est pas générée si on fait appel indépendamment à chacune de ces instances.
    C'est donc spécifiquement l'appel successif à la méthode sur la liste d'instances qui est la base de l'erreur.
    Je ne comprends ce qu'il peut y avoir dans un appel à une méthode sur une liste d'instances d'une classe qui fait que cette erreur apparait ni ce que je peux faire pour identifier précisément dans mon code ce qui la cause et comment je peux le corriger.
    Si quelqu'un peut m'aider sur ce point, je serais très reconnaissant. Je précise aussi au passage que mes connaissances en développement sont balbutiantes. J'ai une formation en géologie et une expérience professionnelle en administration système. Je commence à écrire du code seulement depuis quelques mois. Il se peut donc que je sois passé à côté de quelque chose de très évident ou que j'ai omis de faire certains tests qui peuvent paraître basiques.

    Merci.

    a+

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour

    ioctl (IO ConTroL) c'est un appel système Unix puis Linux qui permet de dialoguer/controler/piloter essentiellement (uniquement ?) des fichiers spéciaux c'est à dire des périphériques (les fichiers pour lesquels, quand on fait "ls -l", le premier caractère affiché n'est ni '-', 'd' ou 'l', mais 'b' (périphérique mode bloc) ou 'c' (périphérique mode caractère)).

    Cela m'étonnerait beaucoup que tu lances volontairement ce genre de choses. Donc, si tu récupères un message d'erreur "Inappropriate ioctl for device" c'est que c'est une fonction de la bibliothèque que tu utilises qui le fait pour toi, "à l'insu de ton plein gré" comme on dit.

    Ce genre de message s'obtient quand on lance ioctl sur un fichier "régulier" (complètement hermétique à tout pilotage de ce type) ou sur un périphérique mais en lui demandant quelque chose d'incongru (un rembobinage, licite pour un dérouleur de bandes magnétiques, mais pas pour un terminal (/dev/tty)).

    J'ai regardé très vite et en diagonale (la sismologie, j'y entrave que dalle !) le module taup. Il y a 4 fonctions. La seule qui utilise un périphérique, c'est "travelTimePlot" qui, in fine, affiche quelque chose quelque part (un périphérique).

    A ta place, sous debugger, je placerais un point d'arrêt au tout début de cette fonction, et relancerais le script qui provoque (même si ça semble aléatoire comme tu l'as indiqué) l'erreur.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Super, merci beaucoup pour cette réponse très détaillée
    Je vais aller tester ça de suite :-)

    a+

Discussions similaires

  1. bug avec parallel.for
    Par shayw dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/03/2014, 12h00
  2. Inappropriate ioctl for device
    Par Balbuzard dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2009, 14h00
  3. cannot grant exclusive access for device i2c-parport
    Par olivierkaelin dans le forum Matériel
    Réponses: 0
    Dernier message: 20/07/2008, 17h41
  4. Réponses: 0
    Dernier message: 16/11/2007, 07h48
  5. [VBS]Bug sur les boucles for.
    Par méphistopheles dans le forum VBScript
    Réponses: 7
    Dernier message: 24/03/2006, 22h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo