[BUG] FML : FMLSecurityManager
-
Ce que tu peux faire à la place c’est de re-créer le FMLSecurityManager et de charger le bytecode depuis un autre fichier
-
@‘Blackout’:
@‘Mokona78’:
@‘Blackout’:
Je n’étais pas obliger de report le bug, mais tant qu’a faire ^^
Je doute que beaucoup de personnes ait l’occasion de dealer avec cette classe donc j’ai fais une pull request ^^C’est la bonne attitude !
Merci pour les précisions.
Parfois je me le demande, ma pull request a été refuser avec le message :
@‘cpw’:[font=-apple-system, BlinkMacSystemFont,No error log? I’ve never seen this happen. Hypothetical fixes are not accepted.]
J’hallucine …
C’est celui qui a refusé qui n’a pas la bonne attitude…
-
cpw est quand même plus sympa avec les pull request que Lex, en revanche, les tests unitaires ne sont pas considérés comme une utilisation normale de FML et de Forge d’où le rejet.
-
Mais là, il y a une erreur non ? Elle n’est pas bien complexe à reproduire j’imagine. Il suffit d’appeler la fonction dans un contexte avec une pile moins profonde que 5 niveaux.
À moins que ce soit impossible ?
-
Si c’est une erreur très grave, il y a de forte chance que d’autres moddeurs aient eu le même souci, personnellement, j’ai beau avoir relue une bonne dizaine de fois le code qu’à donné Blackout, je ne vois toujours pas où est le problème.
-
Si getClassContext(); renvoie un tableau de 4 ou 5 éléments ?
-
Aucune idée, je ne sais pas ce que renvoie ce getter, un tableau de class, mais lesquelles ?
-
Ça renvoie la callstack. Ce sont les différentes appels qui ont amenés à l’appel courant.
Mais peu importe:
- un tableau de taille 4 (>3) auquel on accède à l’élément d’indice 4, ça fait IndexOutOfBoundsException.
- un tableau de taille 5 (>4) auquel on accède à l’élément d’indice 5, ça fait pas mieux, pas pire.
Le test n’est pas cohérent avec l’appel qui suit.
Après, peut-être qu’il y a une règle qui dit que si le tableau renvoyé est assuré d’avoir une taille 4 alors il a une taille 5. Et s’il a une taille 5 il est assuré d’avoir une taille 6… J’y crois assez peu.
-
http://www.minecraftforge.net/forum/index.php/topic,40907.msg215989.html#msg215989
“So anyway, I have to completly bypass the security manager using ASM.”
Retires cette phrase avant que lex ne la voit, sinon tu vas encore plus te faire allumer x)
Lex n’aime pas du tout les “comme vous n’acceptez pas mon correctif / ma fonctionnalité je vais tout hacker de mon côté avec de l’ASM”. -
C’est pour un test runner, pas pour distribuer dans un mod. Je ne vois pas pourquoi il ne pourrait pas le faire.
De plus, il ajoute le crash log demandé qui montre bien que le problème est réel et pas hypothétique.
-
cpw a fini par merge le pull request. (voir https://github.com/MinecraftForge/MinecraftForge/pull/3125#issuecomment-236043532 )
-
@‘robin4002’:
http://www.minecraftforge.net/forum/index.php/topic,40907.msg215989.html#msg215989
“So anyway, I have to completly bypass the security manager using ASM.”
Retires cette phrase avant que lex ne la voit, sinon tu vas encore plus te faire allumer x)
Lex n’aime pas du tout les “comme vous n’acceptez pas mon correctif / ma fonctionnalité je vais tout hacker de mon côté avec de l’ASM”.Non non, ce n’est pas du tout ça dont il est question x)
Indépendamment de ma volonté, je fais un System.exit() et ce n’est pas autorisé par le SecurityManager.
Donc la, bug ou pas, je dois bypass ^^
Mais ce n’est pas pour un mod, donc aucun soucis incompatibilité ^^ -
@‘Superloup10’:
cpw a fini par merge le pull request. (voir https://github.com/MinecraftForge/MinecraftForge/pull/3125#issuecomment-236043532 )
Ah ! Bien.
À noter que sa remarque sur le fait que cette classe s’active pendant une session de test est peut-être à revoir.
-
Bah c’est juste un System.exit() appelé par une classes externe au mod et à ses tests qui fait qu’on arrive dans cette fonction.
Je lance le jeu comme si c’était le launcher qui le lancé pour ne pas avoir a faire un new WorldServeur() manuellement par exemple et donc éviter d’avec un environnement de test différent de celui de production.
Mais oui, je suis d’accord que dans l’ideal, je n’ai pas a modifier le FMLSecurityManager, mais un mod n’a pas a appeler System.exit() ^^
