Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Durant une partie de « Left 4 Dead 2 », mon coéquipier, souhaitant me montrer les performances de sa nouvelle machine (plutôt haut de gamme), lance une carte et entre quelques commandes :

z_common_limit 10000
z_mega_mob_size 10000
director_force_panic_event

Sans grande surprise, le vénérable jeu n'a pas apprécié qu'on lui demande d'afficher d'un coup 10 000 ennemis alors que la valeur par défaut est de 50.

La demi-heure suivante a été consacrée à expliquer ce qu'est un « buffer overflow » et pourquoi, même avec un Core i7, 16 Go de RAM et une carte graphique haut de gamme, il est juste impossible qu'un moteur de jeu grand public puisse gérer autant d'ennemis simultanément. Il n'y avait aucun problème de performance à rechercher. PEBKAC.
PEBKAC #9519 proposé par lionnel le 21/02/2014 | 11 commentaires | 👍🏽 👎🏽 +108
Il faudra m'expliquer le rapport entre un buffer overflow et le fait de demander la création d'un grand nombre de joueur.
Un buffer overflow c'est un problème de gestion des dit buffers, pas quelques chose de normal même lorsqu'on demande à mettre énormément de choses dans ce buffer. La gestion du buffer devrait simplement refuser d'ajouter des données lorsqu'il n'y a plus de place, pas faire un overflow.

Par contre sans plus de détails sur comment le jeux n'as pas aprécié l'opération, difficile de dire où est le pebkac :
- le jeu ferme sur une erreur parce qu'il n'arrive pas à allouer tout les ressources nécessaire : principale responsable, ton pote qui en demande trop. Je comprend que les dev n'ai pas voulu mettre de limite, laquelle va dépendre de la machine.
- le jeu fait des buffers overflow : PEBKAC pour les dev qui ont des failles dans leur gestion.
- le jeu rame monumentalement : problème de performance.
Commentaire #131048 écrit par Bear'sBeard le 21/02/2014 à 13h31 | 👍🏽 👎🏽
CTLP aussi, parce que tu confonds out of memory et buffer overflow. Dans ce que tu racontes, à aucun moment il n'y a de buffer overflow.
Commentaire #131049 écrit par FBM le 21/02/2014 à 13h32 | 👍🏽 👎🏽
Le jour où ton coéquipier fera vraiment la guerre, il sera content de s'être entraîné à jouer contre 10 000 ennemis simultanément. Et là, ça ne ramera pas, ils l'attaqueront à la vitesse normale.
Commentaire #131060 écrit par /etc/passwd le 21/02/2014 à 15h49 | 👍🏽 👎🏽
Alors pour le fait que le jeu n'ai "pas apprécié, c'est un crash avec retour immédiat sur le bureau lorsque le nombre de zombie sur la carte devient trop grand. Avant de planter le jeu n'utilise pas plus de ram, il en reste au moins 12Go disponible. En reproduisant la manip sur une version linux, j'obtiens un segfault.

Pour moi le PEBKAC c'est surtout de croire qu'une machine performante va permettre de dépasser très largement les limites d'un moteur de jeu, d'autant plus qu'il n'est pas tout jeune (le source engine date de 2004)

Pour info, dans L4D les valeurs par défaut sont de 30 zombies en temps normal et 50 lors des "panic events".
A l'aide des commandes de cheat, on peut monter jusqu'à 300-350, au delà le jeu crashe quasiment à coup sur.
Il n'y a pas de PEBKAC pour les dev puisque les commandes utilisées sont considérées comme cheats et non utilisables sur les serveurs officiels
Commentaire #131061 écrit par lionnel le 21/02/2014 à 16h09 | 👍🏽 👎🏽
À noter que le moteur source a été mis à jour de nombreuses fois depuis 2004 hein.

Mais je vois le souci, c'est comme lorsque je m'amusais à créer un grand nombre d'entités, lorsque je dépassais la limite, le moteur crashait au lieu de me refuser la création de mon entité...

J'ai un ami qui a accès au code source du source engins, il m'a bien dit que c'est crade :-/

Ceci dit, vivement Source 2.

Édit: Par contre, si le moteur source est un moteur "grand public", quel moteur ne l'est pas ?
Commentaire #131070 écrit par Lynix le 21/02/2014 à 17h40 | 👍🏽 👎🏽
Si le jeu est en 32 bits, alors il ne peut allouer que 2 Go maximum sous windows (sauf si le kernel est lancé avec le switch /3GB et que l'exécutable a le flag idoine), et 3 Go sous linux. Donc il peut tout à fait être out-of-memory avec 12 Go libre. Même en 64 bits, avec plein de mémoire libre, rien ne garantit qu'il est possible d'allouer plusieurs Go de manière contigüe.

D'autre part, un segfault est typiquement ce qui arrivera après une allocation ratée avec noexcept: dans ce cas, new retourne NULL, et si la valeur de retour n'est pas vérifiée, le moindre appel d'une méthode ou la lecture d'une variable membre provoquera une segfault... Sans qu'il y ait le moindre buffer overflow nulle part.

En plus, un buffer overflow se manifeste normalement indépendamment de la taille de la mémoire allouée : si le code a une erreur et va écrire là où il ne devrait pas, pas besoin d'allouer des Go pour que ça plante.
Commentaire #131081 écrit par FBM le 21/02/2014 à 18h32 | 👍🏽 👎🏽
J'oubliais : tu as beau avoir 12 Go de libre, si tu demandes d'un coup d'allouer 100 Go, l'allocation échoue alors qu'en réalité il y a plein de mémoire libre.
Commentaire #131092 écrit par FBM le 21/02/2014 à 19h23 | 👍🏽 👎🏽
Ou malheureux de s'être encroûté devant un écran, au lieu de ramper dans la boue et faire joujoux avec des pampans comme les 10 000 ennemis. :p
Commentaire #131319 écrit par Kebukai le 23/02/2014 à 17h04 | 👍🏽 👎🏽
Havok peut-etre?
Commentaire #131457 écrit par pokexpert le 24/02/2014 à 14h48 | 👍🏽 👎🏽
Il faut une licence pour l'utiliser et avoir accès au code source, pareil avec Source, du coup quelle différence ?
Commentaire #131500 écrit par Lynix le 24/02/2014 à 19h03 | 👍🏽 👎🏽
"Par contre, si le moteur source est un moteur "grand public", quel moteur ne l'est pas ?"

Je pensait surtout autres aux moteurs physiques ou autres technologies utilisées dans les simulateurs professionnels, certains gèrent une quantité de paramètres assez impressionnante, pas forcément en matière de graphique d'ailleurs
Commentaire #131518 écrit par lionnel le 25/02/2014 à 00h26 | 👍🏽 👎🏽