Forum Linux.debian/ubuntu comportement étrange en console

Posté par (page perso) .
Tags : aucun
1
10
mar.
2012

Bonjour,
depuis quelques temps, lorsque je me logue en root dans un émulateur de terminal
que ce soit konsole ou xterm ou autre, j'ai le message suivant:

bash: impossible de régler le groupe de processus du terminlal (-1): Ioctl() inappropré pour un périphérique
bash: pas de contrôle de tâche dans ce shell

J'ai essayé de changer l'interpréteur de commande, mais avec dash à la place de bash, j'ai le même comportement mis à part que le message est en anglais.

Quelqu'un aurait-il une idée pour revenir à un comportement normal ?

Ah oui, j'oubliais, je suis sous Debian testing, je sais testing c'est pas stable, mais quand même….
Merci,
Luc

  • # au hazard

    Posté par . Évalué à 2.

    un paquet supprimé ou mal installé pendant une mise à jour ?
    un mauvais chown ? (pour l'histoire du groupe)

    tu as essayé le message en anglais dans google ?
    ca te donne des reponses ?

    • [^] # Re: au hazard

      Posté par (page perso) . Évalué à 0.

      Sans doute un problème de paquet, mais comment savoir lequel ?
      quant à google, en anglais comme en français, je n'ai rien trouvé de probant.

  • # strace

    Posté par (page perso) . Évalué à 2.

    strace -f le terminal, trouve le syscall/ioctl qui pose problème et en remontant dans l'historique il doit y avoir moyen de voir d'où ça vient.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: strace

      Posté par (page perso) . Évalué à 1.

      strace -f konsole …
      su
      password
      echec d'autentification…
      et dans la sortie de strace, je vois à plusieurs reprises:
      ioctl(10, TIOCSCTTY unfinished …)
      ou
      ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS unfinished …)
      ou
      ioctl(9, TIOCGPGRP unfinished …)

      je suis bien incapable d'en tirer une quelconque conclusion.

      • [^] # Re: strace

        Posté par . Évalué à 2.

        Apparemment, c'est « bash » qui t'envoie ce message et pas le terminal lui-même. C'est lui qu'il faudrait surveiller, plutôt. En plus, il est probable que ce ne soit pas le shell qui gère ta session qui en soit directement à l'origine, mais plutôt une sous-instance lancée par un script.

        • [^] # Re: strace

          Posté par (page perso) . Évalué à 1.

          alors avec strace -f bash, j'obtiens des résultats très semblable concernant les "ioctl".

          J'ai quand même trouvé deux lignes nouvelles et peut-être intéressantes:
          8294 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff64a755d0) = -1 EINVAL (Invalid argument)

          et
          8348 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b654bc0) = -1 EINVAL (Invalid argument)

          • [^] # Re: strace

            Posté par (page perso) . Évalué à 3.

            Faut croire qu'il y a quelque chose qui fait des trucs pas nets avec stdin et stdout avant le TCGETS (genre qui les ferment ?). Est-ce que tu arrives à reproduire le problème avec un programme du genre (à stracer aussi) ?

            #include <termios.h>
            #include <unistd.h>
            #include <stdio.h>
            #include <sys/ioctl.h>
            
            int main(void)
            {
                    struct termios t;
                    printf("%d: %d\n", 0, tcgetattr(0, &t));
                    printf("%d: %d\n", 0, ioctl(0, TCGETS, &t));
                    printf("%d: %d\n", 1, tcgetattr(1, &t));
                    printf("%d: %d\n", 1, ioctl(1, TCGETS, &t));
                    return 0;
            }
            
            

            L'étape suivante, serai d'examiner ce qui arrive avec les file descriptors 0 et 1 avant le premier ioctl() qui fait EINVAL. Le problème peut être (et est sans doute) avant le shell puisqu'il utilise les fds qui lui sont transmis par le terminal normalement.

            pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.