Sujet: Différences entre Fedora...
30/06/2010 @ 17:55:41: zion: Différences entre Fedora...
Plop,

Merci aux dieux Linux, parce que c'est loin au dessus de ma tête la question.

J'ai un process, développé sous Kylix, qui tourne sur une Fedora.

Pas de bol, dans le process y a un bug, j'accède à un pointeur null, bardaf, ça se plante.

-Sur une vieille Fedora, le programme se ferme, salut, bye bye, bon tant pis
-Sur une nouvelle Fedora, le programme se freeze, je sais pas catcher l'exception, et le programme répond plus.

Qu'est ce qui pourrait avoir changé entre ces deux configs pour que maintenant il se ferme plus quand il se plante?

Une idée magnifique? :figti:
30/06/2010 @ 17:59:30: Dr_Dan: Différences entre Fedora...
Le Kernel? :petrus:
30/06/2010 @ 18:04:58: zion: Différences entre Fedora...
Oui, mais ça me dit pas en quoi la réaction à une exception serait différente :oh:
30/06/2010 @ 20:24:48: philfr: Différences entre Fedora...
Quand tu dis que tu accèdes à un pointeur nul, c'est le kernel qui te le dit avec un segfault ou Kylix qui transforme cet accès en exception ?

L'accès à l'adresse 0 provoquera toujours un segfault. L'accès à une adresse random peut ou non faire un segfault, et si non, le bug se manifestera ailleurs si tu as corrompu quelque chose.

Tu connais le bug et tu dois vivre avec en prod ou tu cherches à trouver où il est pour le corriger ?
30/06/2010 @ 20:28:21: zion: Différences entre Fedora...
Je connais le bug, je l'ai corrigé, mais le comportement en cas de segfault ne me plait pas, je préfère que le programme se vautre ce que je peux détecter facilement plutôt que de rester dans un état instable :sad:

Les Exceptions sous Kylix ont jamais fonctionné en fait, si je fais un try..except et qu'il y a un segfault, ça se vautrait tout de même. Sous Windows tu peux le catcher et tenter de reprendre une activité "normale".

J'aimerais donc soit:
-Pouvoir le catcher comme je le ferais sous Windows dans mon try..except
-Soit que comme avant, il se petit suicide et on en parle plus

L'entre deux, c'est moche... :grin:
30/06/2010 @ 20:37:54: zion: Différences entre Fedora...
http://www.drdobbs.com/184404850;jsessionid=LUW5SGMSHDJ43QE1GHPCKHWATMY32JVN

A lire demain quand j'aurai la tête reposée, mais quand je commence avec ça, ça fait peur...

When introduced in the early 1990s, Borland's Delphi application development environment targeted Windows only. With Kylix, however, Borland (the company we work for) has brought the Delphi toolset and environment to Linux. As with Delphi, Object Pascal is at the heart of Kylix. Consequently, in bringing Delphi to Linux we first had to port Object Pascal and all of its language features. And, as it turns out, one of the most challenging features to port involved exception handling.
30/06/2010 @ 20:45:04: Dr_Dan: Différences entre Fedora...
Analyse les sources du kernel :ocube:
:ddr555:
30/06/2010 @ 20:53:02: zion: Différences entre Fedora...
En fait Dr_Dan, t'avais raison...

http://sourceforge.net/tracker/index.php?func=detail&aid=424316&group_id=22417&atid=- 375216

Voila pourquoi ça a jamais bien catché sous Nunux, c'est plus compatible depuis la glibc 2.2.3+ en... 2001... merde :ddr555:
30/06/2010 @ 21:40:15: Dr_Dan: Différences entre Fedora...
En fait Dr_Dan, t'avais raison...

http://sourceforge.net/tracker/index.php?func=detail&aid=424316&group_id=22417&atid=- 375216

Voila pourquoi ça a jamais bien catché sous Nunux, c'est plus compatible depuis la glibc 2.2.3+ en... 2001... merde :ddr555:



Je suis trop fort! :ocube:

:neowen:
30/06/2010 @ 21:43:04: philfr: Différences entre Fedora...
C'est un problème glibc, pas kernel...
Et plutôt redhat.
02/07/2010 @ 13:00:38: zion: Différences entre Fedora...
+ We have not found the "outer" context on the stack.
+ Since it is not possible to reliably detect whether
+ we have a version of glibc (2.2.3+) that has the
+ context bugfix applied, or whether we have a version
+ of glibc that needs the scalpel code (2.2.2 and earlier),
+ or RedHat 7.1 (which is nominally 2.2.2 with internal 2.2.3
+ versioning) we cannot tell whether the modifications to
+ the "correct" context are enough to get exception handling
+ to work correctly.
+
+ If exception handling does not work due to the glibc context
+ confusion, it is likely that the process will hang dead on,
+ for instance, a SIGSEGV and not react at all to a SIGINT (Ctrl+C).
+
+ Because of this unpredictable behaviour take down the process hard.


Quand je lis ça... j'ai peur :ocube:
02/07/2010 @ 13:16:17: philfr: Différences entre Fedora...
Ils devraient linker leur code statiquement avec les fonctions glibc qu'ils maîtrisent... Ainsi ils ne devraient pas "détecter" s'ils tournent sur une glibc buggée ou pas.
02/07/2010 @ 13:24:47: zion: Différences entre Fedora...
J'irai leur dire... mais comme ils ont pas sorti de nouvelle version du compilateur en 10 ans, bon je suis un peu seul à bord.

Mais mon petit doigt me dit que si je suis patient jusqu'en 2011 y aura des solutions, en espérant qu'avec 10 ans de recul ils ont trouvé des experts Linux :ocube:
02/07/2010 @ 13:44:00: philfr: Différences entre Fedora...
Et si tu utilisais une vielle version de glibc et que tu prélinkais au lancement de ton appli ?

LD_PRELOAD=/lib/libc-kivabien.so ./tonsoft
02/07/2010 @ 13:50:57: zion: Différences entre Fedora...
Euh, je vais pouvoir utiliser une glibc d'il y a 10 ans sur une Fedora de maintenant? :ocube:

Sachant que j'utilise aussi d'autres librairies dans le soft?
02/07/2010 @ 13:51:50: philfr: Différences entre Fedora...
J'irai leur dire... mais comme ils ont pas sorti de nouvelle version du compilateur en 10 ans, bon je suis un peu seul à bord.


Ah oué, j'avais pas réalisé la version :ciler:

2.2.2 = 2001-02-16
2.2.3 = 2001-04-27
2.2.4 = 2001-08-16


On est à la 2.11.2 :oh:
02/07/2010 @ 13:54:48: philfr: Différences entre Fedora...
Donc ils ont fait un workaround à un bug glibc qui fait que ça ne fonctionne pas comme il faut quand le bug est corrigé dans glibc...

Alors, tu essaies le LD_PRELOAD avec http://ftp.gnu.org/gnu/glibc/glibc-2.2.2.tar.gz ?
02/07/2010 @ 13:58:29: zion: Différences entre Fedora...
Si je sors le "mode blibli" c'est mal?
Je connais les deux commandes magiques pour compiler, mais j'ai pas envie qu'il aille me niquer ma glibc actuelle :sweat:

:cupra:
02/07/2010 @ 14:09:39: philfr: Différences entre Fedora...
Fais le make, pas le make install, et pas en root, alors tu ne risques rien.
Puis copie les .so dans le directory de ton appli, pour être sûr de ne rien mélanger.
02/07/2010 @ 14:11:40: philfr: Différences entre Fedora...
Sinon, j'ai trouvé ici une encore plus vielle version binaire, mais rien entre celle-là et la 2.2.5 :spamafote:

Edith: gros doigts
Retour