j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined
Behavior...) en C... apparement là a cause de fautes de programmations ils
sont des failles pas toujours perceptibles dans nos programmes, et peuvent
faire.. "n'importe quoi" même ce qu'on veut...
je cite "C'est un bug, même si les apparences sont trompeuses. Le principal
danger d'un UB, est qu'il ne provoque pas systématiquement de
dysfonctionnement visible." (emmanuel D.)
ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB),
qui peut provoquer n'importe quel comportement, allant d'un comportement
'normal' (le pire, car on ne se rend compte de rien) au crash
franc et massif avec destruction de données, reformatage du disque dur, ou
largage de bombe sur Bagdad..." (Emmanuel D.)
alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des UB
graves comme des pertes de données a des endroits totalement différents de
ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou
est-ce "théoriquement possible" mais extremement rare ?
dans quelles circonstances ?
vous ait-il déjà arrivé de planter complètement votre machine suite a un UB
? quand je dis planter complètement c'est... boot failure quoi...
<HS perso = raison du post>
bon je vous demande ça parce que hier soir en testant un programme... j'ai
eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en
environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff écran
bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit
que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou
j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me
demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y
avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation
mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
merci
ps : ça pourrait tout aussi bien être un virus ou un trojan sur mon disque,
ou encore n'importe quoi d'autre bien sûr mais firewall + antivirus a jour
m'en font douter....
--
nico, qui sauvegarde son dd....
http://astrosurf.com/nicoastro
messenger : nicolas_aunai@nospam@hotmail.com
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DINH Viêt Hoà
<HS perso = raison du post> bon je vous demande ça parce que hier soir en testant un programme... j'ai eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff écran bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
Heu ... non, ce n'est pas dû à un UB. Les citations de mon idole ed sont souvent des exagérations.
-- DINH V. Hoa,
"sunZ ! capitaine de soirées"
<HS perso = raison du post>
bon je vous demande ça parce que hier soir en testant un programme... j'ai
eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en
environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff écran
bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit
que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou
j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me
demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y
avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation
mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
Heu ... non, ce n'est pas dû à un UB. Les citations de mon idole ed sont
souvent des exagérations.
<HS perso = raison du post> bon je vous demande ça parce que hier soir en testant un programme... j'ai eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff écran bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
Heu ... non, ce n'est pas dû à un UB. Les citations de mon idole ed sont souvent des exagérations.
-- DINH V. Hoa,
"sunZ ! capitaine de soirées"
Gabriel Dos Reis
"Nicolas aunai" @free.fr> writes:
| salut, | | | j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined | Behavior...) en C... apparement là a cause de fautes de programmations ils | sont des failles pas toujours perceptibles dans nos programmes, et peuvent | faire.. "n'importe quoi" même ce qu'on veut...
y compris déclencher une troisième guerre mondiale ou faire sortir les démons du nez du programmeur :-)
| je cite "C'est un bug, même si les apparences sont trompeuses. Le principal | danger d'un UB, est qu'il ne provoque pas systématiquement de | dysfonctionnement visible." (emmanuel D.)
c'est assez variable. Chez certains
| ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB), | qui peut provoquer n'importe quel comportement, allant d'un comportement | 'normal' (le pire, car on ne se rend compte de rien) au crash | franc et massif avec destruction de données, reformatage du disque dur, ou | largage de bombe sur Bagdad..." (Emmanuel D.)
ce que je trouve assez amusant, c'est que à chaque on se surprend à vouloir définir un fonctionnement qu'on dit par ailleurs indéfini :-) si le fonctionnement est indéfini alors comment peut-il être « normal » ?
| alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des UB | graves comme des pertes de données a des endroits totalement différents de | ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou | est-ce "théoriquement possible" mais extremement rare ?
ah ça peut arriver vraiment dans la pratique. Un disk-crash avec pertes de données suite à un déréférencement d'un pointeur nul n'est pas si rare chez certains développeurs de noyaux par exemple. Un programme mal compilé par un compilateur (qui a utilisé une variable non-initialisée dans ses calculs) peut réserver des surprises. Une collision entre un TGV et un véhicule à un passage à niveau peut provenir d'un fonctionnement indéfini dans le programme qui pilote le déclenchement des signaux.
Mais évidemment il y a fonctionnement indéfini et fonctionnement indéfini. Si je fais #include <unistd.h>, du point de vue de la norme j'ai un fonctionnement indéfini, mais je m'attends à un fonctionnement bien plus précis.
| salut,
|
|
| j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined
| Behavior...) en C... apparement là a cause de fautes de programmations ils
| sont des failles pas toujours perceptibles dans nos programmes, et peuvent
| faire.. "n'importe quoi" même ce qu'on veut...
y compris déclencher une troisième guerre mondiale ou faire sortir les
démons du nez du programmeur :-)
| je cite "C'est un bug, même si les apparences sont trompeuses. Le principal
| danger d'un UB, est qu'il ne provoque pas systématiquement de
| dysfonctionnement visible." (emmanuel D.)
c'est assez variable. Chez certains
| ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB),
| qui peut provoquer n'importe quel comportement, allant d'un comportement
| 'normal' (le pire, car on ne se rend compte de rien) au crash
| franc et massif avec destruction de données, reformatage du disque dur, ou
| largage de bombe sur Bagdad..." (Emmanuel D.)
ce que je trouve assez amusant, c'est que à chaque on se surprend à
vouloir définir un fonctionnement qu'on dit par ailleurs indéfini :-)
si le fonctionnement est indéfini alors comment peut-il être « normal » ?
| alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des UB
| graves comme des pertes de données a des endroits totalement différents de
| ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou
| est-ce "théoriquement possible" mais extremement rare ?
ah ça peut arriver vraiment dans la pratique. Un disk-crash avec
pertes de données suite à un déréférencement d'un pointeur nul n'est
pas si rare chez certains développeurs de noyaux par exemple.
Un programme mal compilé par un compilateur (qui a utilisé une
variable non-initialisée dans ses calculs) peut réserver des surprises.
Une collision entre un TGV et un véhicule à un passage à niveau peut
provenir d'un fonctionnement indéfini dans le programme qui pilote le
déclenchement des signaux.
Mais évidemment il y a fonctionnement indéfini et fonctionnement
indéfini. Si je fais #include <unistd.h>, du point de vue de la norme
j'ai un fonctionnement indéfini, mais je m'attends à un fonctionnement
bien plus précis.
| salut, | | | j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined | Behavior...) en C... apparement là a cause de fautes de programmations ils | sont des failles pas toujours perceptibles dans nos programmes, et peuvent | faire.. "n'importe quoi" même ce qu'on veut...
y compris déclencher une troisième guerre mondiale ou faire sortir les démons du nez du programmeur :-)
| je cite "C'est un bug, même si les apparences sont trompeuses. Le principal | danger d'un UB, est qu'il ne provoque pas systématiquement de | dysfonctionnement visible." (emmanuel D.)
c'est assez variable. Chez certains
| ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB), | qui peut provoquer n'importe quel comportement, allant d'un comportement | 'normal' (le pire, car on ne se rend compte de rien) au crash | franc et massif avec destruction de données, reformatage du disque dur, ou | largage de bombe sur Bagdad..." (Emmanuel D.)
ce que je trouve assez amusant, c'est que à chaque on se surprend à vouloir définir un fonctionnement qu'on dit par ailleurs indéfini :-) si le fonctionnement est indéfini alors comment peut-il être « normal » ?
| alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des UB | graves comme des pertes de données a des endroits totalement différents de | ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou | est-ce "théoriquement possible" mais extremement rare ?
ah ça peut arriver vraiment dans la pratique. Un disk-crash avec pertes de données suite à un déréférencement d'un pointeur nul n'est pas si rare chez certains développeurs de noyaux par exemple. Un programme mal compilé par un compilateur (qui a utilisé une variable non-initialisée dans ses calculs) peut réserver des surprises. Une collision entre un TGV et un véhicule à un passage à niveau peut provenir d'un fonctionnement indéfini dans le programme qui pilote le déclenchement des signaux.
Mais évidemment il y a fonctionnement indéfini et fonctionnement indéfini. Si je fais #include <unistd.h>, du point de vue de la norme j'ai un fonctionnement indéfini, mais je m'attends à un fonctionnement bien plus précis.
Pierre Maurette
"Nicolas aunai" @free.fr> a écrit dans le message de news: 3f335654$0$26378$
salut,
j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined Behavior...) en C... apparement là a cause de fautes de programmations ils sont des failles pas toujours perceptibles dans nos programmes, et peuvent faire.. "n'importe quoi" même ce qu'on veut...
je cite "C'est un bug, même si les apparences sont trompeuses. Le principal
danger d'un UB, est qu'il ne provoque pas systématiquement de dysfonctionnement visible." (emmanuel D.)
Êtes-vous certain qu'il s'agit de "Undefined Behavior" ? Je cite (ANSI C99) : /* 3.4.4 1 unspecified behavior behavior where this International Standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance 2 EXAMPLE An example of unspecified behavior is the order in which the arguments to a function are evaluated. */ Le comportement est laissé à la discrétion de l'implémention, qui le documentera (ou non ?). Maintenant, face à un "unspecified behavior", si l'on ne se documente pas, on en arrive fatalement à un "undefined behavior". Enfin, peut-être ... Votre truc ressemble peut-être plus à un effet de bord (side effect). De plus, ce que vous décrivez par la suite ne devrait pas être possible en programmant au niveau "application", il en est de la responsabilité su système d'exploitation. Cordialement, Pierre
ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB), qui peut provoquer n'importe quel comportement, allant d'un comportement 'normal' (le pire, car on ne se rend compte de rien) au crash franc et massif avec destruction de données, reformatage du disque dur, ou largage de bombe sur Bagdad..." (Emmanuel D.)
alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des UB
graves comme des pertes de données a des endroits totalement différents de ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou est-ce "théoriquement possible" mais extremement rare ?
dans quelles circonstances ?
vous ait-il déjà arrivé de planter complètement votre machine suite a un UB
? quand je dis planter complètement c'est... boot failure quoi...
<HS perso = raison du post> bon je vous demande ça parce que hier soir en testant un programme... j'ai eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff écran
bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
merci
ps : ça pourrait tout aussi bien être un virus ou un trojan sur mon disque,
ou encore n'importe quoi d'autre bien sûr mais firewall + antivirus a jour m'en font douter....
-- nico, qui sauvegarde son dd.... http://astrosurf.com/nicoastro messenger : @hotmail.com
"Nicolas aunai" <nicolas.aunai@nospam@free.fr> a écrit dans le message de
news: 3f335654$0$26378$626a54ce@news.free.fr...
salut,
j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined
Behavior...) en C... apparement là a cause de fautes de programmations ils
sont des failles pas toujours perceptibles dans nos programmes, et peuvent
faire.. "n'importe quoi" même ce qu'on veut...
je cite "C'est un bug, même si les apparences sont trompeuses. Le
principal
danger d'un UB, est qu'il ne provoque pas systématiquement de
dysfonctionnement visible." (emmanuel D.)
Êtes-vous certain qu'il s'agit de "Undefined Behavior" ?
Je cite (ANSI C99) :
/*
3.4.4
1 unspecified behavior
behavior where this International Standard provides two or more
possibilities and
imposes no further requirements on which is chosen in any instance
2 EXAMPLE An example of unspecified behavior is the order in which the
arguments to a function are
evaluated.
*/
Le comportement est laissé à la discrétion de l'implémention, qui le
documentera (ou non ?).
Maintenant, face à un "unspecified behavior", si l'on ne se documente pas,
on en arrive fatalement à un "undefined behavior". Enfin, peut-être ...
Votre truc ressemble peut-être plus à un effet de bord (side effect).
De plus, ce que vous décrivez par la suite ne devrait pas être possible en
programmant au niveau "application", il en est de la responsabilité su
système d'exploitation.
Cordialement,
Pierre
ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB),
qui peut provoquer n'importe quel comportement, allant d'un comportement
'normal' (le pire, car on ne se rend compte de rien) au crash
franc et massif avec destruction de données, reformatage du disque dur, ou
largage de bombe sur Bagdad..." (Emmanuel D.)
alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des
UB
graves comme des pertes de données a des endroits totalement différents de
ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou
est-ce "théoriquement possible" mais extremement rare ?
dans quelles circonstances ?
vous ait-il déjà arrivé de planter complètement votre machine suite a un
UB
? quand je dis planter complètement c'est... boot failure quoi...
<HS perso = raison du post>
bon je vous demande ça parce que hier soir en testant un programme... j'ai
eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en
environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff
écran
bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit
que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou
j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me
demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y
avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation
mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
merci
ps : ça pourrait tout aussi bien être un virus ou un trojan sur mon
disque,
ou encore n'importe quoi d'autre bien sûr mais firewall + antivirus a jour
m'en font douter....
--
nico, qui sauvegarde son dd....
http://astrosurf.com/nicoastro
messenger : nicolas_aunai@nospam@hotmail.com
"Nicolas aunai" @free.fr> a écrit dans le message de news: 3f335654$0$26378$
salut,
j'ai souvent entendu parler, ici et ailleurs des 'UB' (Undefined Behavior...) en C... apparement là a cause de fautes de programmations ils sont des failles pas toujours perceptibles dans nos programmes, et peuvent faire.. "n'importe quoi" même ce qu'on veut...
je cite "C'est un bug, même si les apparences sont trompeuses. Le principal
danger d'un UB, est qu'il ne provoque pas systématiquement de dysfonctionnement visible." (emmanuel D.)
Êtes-vous certain qu'il s'agit de "Undefined Behavior" ? Je cite (ANSI C99) : /* 3.4.4 1 unspecified behavior behavior where this International Standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance 2 EXAMPLE An example of unspecified behavior is the order in which the arguments to a function are evaluated. */ Le comportement est laissé à la discrétion de l'implémention, qui le documentera (ou non ?). Maintenant, face à un "unspecified behavior", si l'on ne se documente pas, on en arrive fatalement à un "undefined behavior". Enfin, peut-être ... Votre truc ressemble peut-être plus à un effet de bord (side effect). De plus, ce que vous décrivez par la suite ne devrait pas être possible en programmant au niveau "application", il en est de la responsabilité su système d'exploitation. Cordialement, Pierre
ainsi que : "De plus, vu du langage C, c'est 'comportement indéfini (UB), qui peut provoquer n'importe quel comportement, allant d'un comportement 'normal' (le pire, car on ne se rend compte de rien) au crash franc et massif avec destruction de données, reformatage du disque dur, ou largage de bombe sur Bagdad..." (Emmanuel D.)
alors voila... suite à ça j'aimerai en savoir un peu plus sur ces UB, des UB
graves comme des pertes de données a des endroits totalement différents de ceux sur lesquel le programme bosse etc... peuvent-il vraiment arriver ou est-ce "théoriquement possible" mais extremement rare ?
dans quelles circonstances ?
vous ait-il déjà arrivé de planter complètement votre machine suite a un UB
? quand je dis planter complètement c'est... boot failure quoi...
<HS perso = raison du post> bon je vous demande ça parce que hier soir en testant un programme... j'ai eu des bruits réguliers du coté de mon disque dur (tac tac tac...) et en environ 15-20 secondes vraouuf écran gelé... 10sec plus tard vraaaouff écran
bleu.... erreur grave etc... puis impossible de rebooter ... on aurait dit que le disque dur "bloquait" sur un endroit, sur la lecture d'un truc ou j'sais pas quoi.... bref ça m'a bien foutu les boules.... alors j'me demande, vu qu'en même temps ma partie de programme testée bugue ;) s'il y avait une probabilité qu'un UB fasse ça..
le code qui serait la cause est une partie reception réseau allocation mémoire (200ko max) + écriture sur disque avec fwrite.....
</>
merci
ps : ça pourrait tout aussi bien être un virus ou un trojan sur mon disque,
ou encore n'importe quoi d'autre bien sûr mais firewall + antivirus a jour m'en font douter....
-- nico, qui sauvegarde son dd.... http://astrosurf.com/nicoastro messenger : @hotmail.com