Le problème d'éjection du Mac qu'Apple ignore depuis des années

Les utilisateurs de Mac se plaignent des messages d'erreur d'éjection vagues depuis l'époque PowerPC. Apple ne l'a jamais corrigé. Voici l'histoire de ce problème exaspérant.

Essayez d’éjecter un disque externe sur votre Mac et, parfois, vous obtenez ce message : « Le disque n’a pas été éjecté car un ou plusieurs programmes l’utilisent peut-être. »

Un ou plusieurs programmes. L’utilisent peut-être. Pas « l’utilise ». Pas lesquels. Juste une accusation vague selon laquelle quelque chose, quelque part, aurait un fichier ouvert.

Ce message d’erreur existe sous une forme essentiellement identique depuis plus de quinze ans. Les utilisateurs de Mac réclament un correctif sur les forums d’assistance d’Apple depuis au moins l’ère Snow Leopard. Les plaintes se poursuivent à travers chaque version de macOS : Mountain Lion, Mavericks, Catalina, Monterey, Ventura, Sonoma, Sequoia. Le message ne change jamais. Apple ne le corrige jamais.

Le problème est évident

Lorsque vous ne pouvez pas éjecter un disque, il vous faut deux informations : quel processus le bloque, et comment arrêter ce processus. macOS ne vous donne ni l’une ni l’autre.

Le système d’exploitation sait exactement quel processus a des fichiers ouverts sur le disque. Il doit le savoir, car c’est ainsi qu’il détermine s’il autorise l’éjection. Mais au lieu de partager cette information, macOS vous offre un haussement d’épaules sous forme de texte.

Comparez cela à la commande lsof du Terminal, qui liste tous les processus ayant des fichiers ouverts sur un chemin donné. L’information existe. Elle est accessible. Apple a simplement choisi de ne pas la mettre dans la fenêtre d’erreur.

Ce que font réellement les utilisateurs

Face à ce message d’erreur inutile, les utilisateurs de Mac ont développé tout un folklore de solutions de contournement transmises au fil des publications de forums et des commentaires de blog.

Les optimistes attendent et réessaient, en espérant que le mystérieux processus, quel qu’il soit, se termine de lui-même. Parfois ça marche. Souvent non.

Les plus techniciens ouvrent le Terminal et exécutent lsof /Volumes/DriveName, puis analysent la sortie pour identifier les coupables. Cela suppose de savoir que la commande existe, de comprendre comment lire sa sortie et d’être à l’aise pour tuer des processus.

Les impatients forcent l’éjection et espèrent que tout se passe bien. Parfois c’est sans conséquence. Parfois cela corrompt des données. Sans savoir ce qui utilise réellement le disque, impossible d’évaluer le risque.

Les exaspérés redémarrent simplement leur Mac. Cela fonctionne à coup sûr, mais il est absurde que débrancher un disque exige de redémarrer son ordinateur.

Pourquoi Apple n’a-t-il pas corrigé cela ?

Seul Apple le sait avec certitude, mais voici quelques hypothèses :

La fenêtre d’erreur devrait changer, et Apple évite historiquement d’ajouter de la complexité aux messages destinés aux utilisateurs. Mais « Safari utilise ce disque » n’est pas plus complexe que « un ou plusieurs programmes l’utilisent peut-être ». C’est plus utile.

La liste des processus bloquants pourrait être longue ou déroutante dans certains cas limites. C’est vrai, mais afficher le principal coupable serait infiniment mieux que de ne rien afficher. Et pour les cas limites, un bouton « Afficher les détails » est une pratique courante.

La plupart des utilisateurs ne rencontrent pas ce problème assez souvent pour se plaindre haut et fort. Peut-être, mais les Communautés d’assistance Apple et les forums MacRumors regorgent de fils de discussion remontant à des années. Le problème est bien documenté.

La vraie réponse tient probablement à la priorisation. Apple dispose de ressources d’ingénierie limitées et ce problème, bien qu’agaçant, n’empêche pas les gens d’utiliser leur Mac. Il les fait juste pester contre leur écran toutes les quelques semaines.

Le problème empire

À mesure que le stockage externe se généralise (SSD USB-C rapides, disques portables pour le montage vidéo, disques de sauvegarde pour Time Machine), les utilisateurs rencontrent cette erreur plus fréquemment.

macOS exécute aussi davantage de processus en arrière-plan qui accèdent aux disques externes. Indexation Spotlight, surveillance Time Machine, synchronisation iCloud, divers processus démons. Le nombre de bloqueurs potentiels a augmenté, mais le message d’erreur reste tout aussi vague.

Les utilisateurs migrant depuis d’anciens Mac signalent que le problème apparaît plus souvent sur les machines Apple Silicon. Qu’il s’agisse d’un changement logiciel ou d’une simple perception, ce n’est pas clair, mais les plaintes se sont intensifiées depuis la transition vers le M1.

Des solutions tierces existent

Le fait que des développeurs tiers aient bâti des applications entières autour de ce problème en dit long.

What’s Keeping Me était un utilitaire populaire qui montrait quels processus bloquaient un disque. Il a été abandonné il y a des années et ne fonctionne plus sur macOS moderne, mais son existence prouvait qu’il y avait une demande pour cette fonctionnalité.

Divers utilitaires de barre des menus et scripts ont vu le jour pour combler le vide. Certains surveillent les disques et vous avertissent avant que les problèmes d’éjection ne surviennent. D’autres automatisent le flux de travail lsof pour vous éviter de taper des commandes dans le Terminal.

Ces outils ne devraient pas avoir à exister. La fonctionnalité qu’ils offrent est une capacité de base du système d’exploitation qu’Apple a choisi de ne pas exposer.

À quoi ressemblerait un correctif

Le correctif minimal viable est simple : modifier la fenêtre d’erreur pour indiquer quel processus bloque l’éjection. « Le disque ne peut pas être éjecté car Spotlight est en train de l’indexer » vous dit exactement ce qui se passe. Vous pouvez attendre la fin de l’indexation, ou quitter Spotlight, ou décider de forcer l’éjection en connaissance du risque.

Un meilleur correctif ajouterait une option pour quitter le processus bloquant directement depuis la fenêtre. « Safari a des fichiers ouverts sur ce disque. [Quitter Safari et éjecter] [Annuler] » résout le problème en un clic sans obliger les utilisateurs à fouiller dans le Moniteur d’activité.

Le correctif idéal serait proactif : avertir les utilisateurs lorsqu’ils ont des modifications non enregistrées sur un disque externe, ou lorsque des processus en arrière-plan l’utilisent activement. Prévenir les gens avant qu’ils n’essaient d’éjecter et ne s’agacent.

Aucun de ces correctifs n’est techniquement difficile. Le plus dur est probablement la décision produit de faire le changement, tout simplement.

Pour l’instant

Apple finira peut-être par corriger cela. On l’a déjà vu s’attaquer à des désagréments de longue date quand les astres s’alignent. D’ici là, les solutions de contournement restent les mêmes : commandes du Terminal, travail d’enquête dans le Moniteur d’activité, ou des outils comme Ejecta qui font le travail d’enquête à votre place.

Débrancher un disque ne devrait pas être aussi difficile. Mais ça l’est, et ça l’est depuis des années, et Apple ne semble pas s’en soucier.

Si vous préférez ne pas passer par le Terminal à chaque fois, Ejecta vous montre exactement quel processus bloque votre disque — et vous permet de le quitter d'un seul clic, directement depuis la barre des menus.

Acheter — $9.99