Bonjour,
J'aimerais votre avis sur un problème qui m'embête bien. J'ai une Mandrake 10 avec un noyau 2.4.25 (-2 ou -5). Quand je lis une vidéo avec mplayer appelant une DLL Windows, le process est figé. Pire, tout process qui essaie d'accéder à ce process là (la commande "ps aux" par exemple, ou alors un "cat /dev/1234/cmdline") est figée elle aussi (ce qui implique que je ne peux pas connaitre le status de mon process).
Le seul moyen de rebooter est avec la commande magique alt-sys-b (ou le bouton reset), après quoi j'ai le droit à de fabuleux checkdisks (d'ailleurs au reboot le système me demande de faire à la main des fsck.reiserfs --rebuild-tree).
Je n'ai pas le problème avec la série précédente de noyau 2.4. J'ai cherché sur google en vain.
La dernière ligne que montre un "strace" est un "mmap2" sur la DLL Windows.
Que feriez-vous à ma place ? Comment agir de manière constructive ? C'est plutôt grave qu'un utilisateur non-privilégié puisse mettre en rade le système !
# DLLTools
Posté par Anonyme . Évalué à 3.
[^] # Re: DLLTools
Posté par Fabimaru (site web personnel) . Évalué à 5.
Troll: si ça se passait sous Windows, on verrait des gens dire "ouais, c'est nul c'est un système mal fichu, vu que ce est un système propriétaire fermé ce n'est pas étonnant !
# carte graphique
Posté par sircomsoft . Évalué à 1.
[^] # Re: carte graphique
Posté par Fabimaru (site web personnel) . Évalué à 2.
mplayer -vo null
[^] # Re: carte graphique
Posté par Fabimaru (site web personnel) . Évalué à 3.
Étape suivante: je fais un programme C qui effectue les même appels système.
# FORUM !
Posté par 007 . Évalué à 2.
A ta place, je posterai ça sur les forums. Il y en a un pour Mandrake sur linuxfr :
http://linuxfr.org/forums/14/(...)
Merci de votre attention.
[^] # Re: FORUM !
Posté par Fabimaru (site web personnel) . Évalué à 2.
# Bug noyau ?
Posté par Obsidian . Évalué à 3.
Parce que mmap est un appel système bien connu, mais mmap2, même s'il est similaire, est:
1) Spécifique à Linux
2) Assez récent (depuis le noyau 2.3.31)
Si en plus, cela bloque les processus complètement indépendants mais qui se réfèrent à ton processus (probablement via /proc), je dirais qu'il y a 9 chances sur 10 que mmap2 soit instable et réagisse mal à travers un filesystem exporté.
Essaie déjà de déplacer ta DLL Windows sur ton disque local et de t'arranger pour que mplayer aille la chercher à cet endroit, cela devrait probablement résoudre le problème temporairement. Si elle s'y trouvait déjà, essaie au contraire de la déplacer vers une partition FAT ou EXT2. Ensuite, si tes recherches sur Google ne donnent rien, envoie un patch ou soumet un rapport de bug ... et tiens-nous au courant :-)
Bon courage.
[^] # Re: Bug noyau ?
Posté par Fabimaru (site web personnel) . Évalué à 2.
Bon, allez encore un petit test et quelques "fsck.reiserfs --rebuild-tree" :-(
[^] # Re: Bug noyau ?
Posté par gc (site web personnel) . Évalué à 2.
# 2.4 -> 2.6
Posté par wismerhill . Évalué à 2.
Peut-être Mandrake a-t-elle intégré au noyau 2.4 des patch qui posent problème dans ce cas précis. À noter que le problème s'était également posé avec wine (toujours lié à des dll windows donc). Peut-être des patch de sécurité qui bloquaient le code windows ...
[^] # Re: 2.4 -> 2.6
Posté par 007 . Évalué à 1.
Il y a le même "problème" avec execshield. C'est un "faux" problème car execsheild peut-être désactivé par programme :
# execstack -q /usr/bin/mplayer
X /usr/bin/mplayer
Pour un programme "normal" :
# execstack /bin/ls
- /bin/ls
execshield peut aussi être désactivé lors de la phase de link mais j'ai oublié comment. Normalement au build de mplayer c'est fait automatiquement.
[^] # Re: 2.4 -> 2.6
Posté par Fabimaru (site web personnel) . Évalué à 2.
# meuh
Posté par gc (site web personnel) . Évalué à 5.
Ca sent le D-state ça : le disk-state à savoir l'attente du processus du résultat d'une E/S disque. Ça arrive sur bug ou "feature"[1] du kernel. Pour ton cas, c'est curieux, est-ce que l'utilisation des dll windows nécessite un module kernel spécifique ? Ça ne doit pas être le cas je suppose, si c'est bien cela c'est probablement un bug du kernel. Essaie de mettre à jour ton kernel ?
Le seul moyen de rebooter est avec la commande magique alt-sys-b (ou le bouton reset), après quoi j'ai le droit à de fabuleux checkdisks
Avant Alt-SysRq-B, tappe Alt-SysRq-S et Alt-SysRq-U (plusieurs fois chacun, ça ne réagit pas toujours en une fois) : le S permet de s-ynchronser les disques (flusher les buffers d'ecriture sur disque) et U de u-mounter les partitions (en fait ça les remonte en read-only). Ça te permettra d'éviter toute corruption sur les disques.
[1] un montage NFS par défaut est "hard" c'est à dire que toute attente réseau sur une entrée-sortie est complètement bloquante pour le processus (D-state donc) afin de simuler au plus près une partition montée localement ; ça peut être emmerdant si le serveur NFS tombe en rade, si on souhaite que les processus qui ouvrent des fichiers sur les volumes NFS se mangent des EIO plutôt qu'ils soient bloqués jusqu'au retour hypothétique du serveur NFS, monter avec l'option "soft"
[^] # Re: meuh
Posté par Fabimaru (site web personnel) . Évalué à 2.
C'est le dernier dispo chez Mandrake.
Alt-SysRq-U
Je n'avais pas fait celui-là.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.