Debugging plantage enregistrement PS + mauvaise réception

Échanges entre les développeurs et les utilisateurs au sujet du développement logiciel de Pouchin TV Mod. Les participants sont présumés avoir des connaissances raisonnables en matière de programmation informatique.

Debugging plantage enregistrement PS + mauvaise réception

Messagepar Curtis » 19 Avr 2011, 21:24

pour reproduire le plantage il faut:

- idéalement posséder une antenne intérieure,

- être sur une chaine que l'on reçoit mal,

- enregistrer une chaine au format PS ( enregistrement manuel ou programmé peu importe )

- puis volontairement modifier l'amplification de l'antenne intérieur ( en tournant le bouton d'amplification dans les 2 sens ) pour créer un décrochage de l'image

- pouchintvmod va alors se planter, avec un premier message de windows lié à la prévention de l'exécution des données ( écriture dans des zones mémoires ou dépassement de tampon il me semble ), puis ensuite le message classique de windows indiquant que pouchintvmod a rencontré un problème et doit être fermé


j'ai refait cette manip avec la version 286 et j'ai réussi à obtenir un crash de l'application, avec ces 2 messages d'erreurs :

ptvm_prevention_données.png
ptvm_prevention_données.png (5.13 Kio) Vu 7623 fois


ptvm_erreur_crash.png
ptvm_erreur_crash.png (2.91 Kio) Vu 7623 fois



il y a de fortes chances que le problème soit lié à la fonctionnalité d'enregistrement PS, car je n'ai pas de problème quand j'enregistre en mode TS
Curtis
 
Messages: 164
Enregistré le: 27 Fév 2010, 21:15

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Messagepar Curtis » 19 Avr 2011, 21:40

en faisant une sorte de débogage ( attacher le processus pouchintvmod.exe dans visual studio 2008 ) l'erreur apparait dans le fichier capture.cpp à la ligne 269, une exception non gérée :

// Ajout de données dans le bloc. Retourne 'true' si la totalité des données ont pu être ajoutées,
// 'false' sinon ; dans ce dernier cas, rien n'est modifié.
bool PS_chunk::addData(const UINT8 * ptr, UINT32 size)
{
if (ixBuf+size <= _countof(buffer)) {
memcpy(&buffer[ixBuf], ptr, size);
ixBuf = ixBuf + UINT16(size);
return true;
}
return false;
}


puis lors d'une troisième tentative de créer ce bug j'ai eu en bonus un écran bleu 10 minutes après l'apparition du message d'erreur de winxp :

DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (cb)
Caused by a driver not cleaning up completely after an I/O.


donc prudence pour ceux qui veulent tester la reproductibilité du bug, sauvegardez vos travaux en cours avant d'essayer de reproduire le bug :mrgreen:

à noter que le problème a lieu aussi avec la version 263 de pouchintvmod, il se peut alors que ce soit un autre problème que celui du forumeur "big_rapha100e" ou alors ce forumeur n'a pas utilisé le format PS lors de son test avec la version 263 ?

il se peut aussi que le comportement soit différent entre windows 7 et windows xp
Curtis
 
Messages: 164
Enregistré le: 27 Fév 2010, 21:15

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Messagepar Gingko » 20 Avr 2011, 00:27

Curtis a écrit:en faisant une sorte de débogage ( attacher le processus pouchintvmod.exe dans visual studio 2008 ) l'erreur apparait dans le fichier capture.cpp à la ligne 269, une exception non gérée :

// Ajout de données dans le bloc. Retourne 'true' si la totalité des données ont pu être ajoutées,
// 'false' sinon ; dans ce dernier cas, rien n'est modifié.
bool PS_chunk::addData(const UINT8 * ptr, UINT32 size)
{
if (ixBuf+size <= _countof(buffer)) {
memcpy(&buffer[ixBuf], ptr, size);
ixBuf = ixBuf + UINT16(size);
return true;
}
return false;
}


puis lors d'une troisième tentative de créer ce bug j'ai eu en bonus un écran bleu 10 minutes après l'apparition du message d'erreur de winxp :

DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (cb)
Caused by a driver not cleaning up completely after an I/O.


donc prudence pour ceux qui veulent tester la reproductibilité du bug, sauvegardez vos travaux en cours avant d'essayer de reproduire le bug :mrgreen:

à noter que le problème a lieu aussi avec la version 263 de pouchintvmod, il se peut alors que ce soit un autre problème que celui du forumeur "big_rapha100e" ou alors ce forumeur n'a pas utilisé le format PS lors de son test avec la version 263 ?

il se peut aussi que le comportement soit différent entre windows 7 et windows xp

Ok, merci.

J'arrive à reproduire ce problème, avec un plantage à cet endroit-là, mais je pense que la cause réelle doit sans doute se trouver en amont dans le transmission des données (et en particulier dans le système de récupération des paquets après rupture).

Je verrai ça quand j'aurai le temps (mais de toutes façons, j'ai une réécriture de la fonction PS en suspens depuis un moment, peut-être que je remplacerai bêtement l'ancienne version par la nouvelle à un moment donné).

L'écran bleu, reste, lui, nécessairement causé par le tuner, sans doute indirectement suite au blocage induit par le crash. Autrement dit, d'autres tuners n'auraient sans doute pas ce problème, et à l'inverse, d'autres types de crashes pourraient sans doute produire le même problème avec ce tuner.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
Avatar de l’utilisateur
Gingko
Administrateur du site et développeur
 
Messages: 1953
Enregistré le: 05 Aoû 2007, 12:57
Localisation: Pantin (IDF, 93)

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Messagepar big_rapha100e » 22 Avr 2011, 11:24

Curtis a écrit:en faisant une sorte de débogage ( attacher le processus pouchintvmod.exe dans visual studio 2008 ) l'erreur apparait dans le fichier capture.cpp à la ligne 269, une exception non gérée :

// Ajout de données dans le bloc. Retourne 'true' si la totalité des données ont pu être ajoutées,
// 'false' sinon ; dans ce dernier cas, rien n'est modifié.
bool PS_chunk::addData(const UINT8 * ptr, UINT32 size)
{
if (ixBuf+size <= _countof(buffer)) {
memcpy(&buffer[ixBuf], ptr, size);
ixBuf = ixBuf + UINT16(size);
return true;
}
return false;
}


puis lors d'une troisième tentative de créer ce bug j'ai eu en bonus un écran bleu 10 minutes après l'apparition du message d'erreur de winxp :

DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (cb)
Caused by a driver not cleaning up completely after an I/O.


donc prudence pour ceux qui veulent tester la reproductibilité du bug, sauvegardez vos travaux en cours avant d'essayer de reproduire le bug :mrgreen:

à noter que le problème a lieu aussi avec la version 263 de pouchintvmod, il se peut alors que ce soit un autre problème que celui du forumeur "big_rapha100e" ou alors ce forumeur n'a pas utilisé le format PS lors de son test avec la version 263 ?

il se peut aussi que le comportement soit différent entre windows 7 et windows xp


Bonjour,

J'arrive à présent à reproduire le problème, pourrais tu m'expliquer la méthode utilisée avec Visual Studio pour localiser le souci ? Merci d'avance
big_rapha100e
 
Messages: 15
Enregistré le: 18 Avr 2011, 19:54

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Messagepar Gingko » 22 Avr 2011, 11:44

big_rapha100e a écrit:J'arrive à présent à reproduire le problème, pourrais tu m'expliquer la méthode utilisée avec Visual Studio pour localiser le souci ? Merci d'avance
Si vous voulez éviter ces plantage, ajoutez les lignes suivantes à la ligne 490 du fichier capture.cpp :
Code: Tout sélectionner
    // Ignorer si on n'a pas un en-tête PS conforme au début
    if (!hdr.isPS())
        return;
… pour obtenir ceci :
Code: Tout sélectionner
/// Traitement d'un paquet PS reconstitué
void PS_buffer::send(PCUINT8 ptr, UINT32 ptr_size) throw(...)
{
    const PS_hdr_wd &   hdr         = *reinterpret_cast<const PS_hdr_wd *>(ptr);
    bool                start       = true;
    UINT32              added_bytes = 0;

    // Ignorer si on n'a pas un en-tête PS conforme au début
    if (!hdr.isPS())
        return;

    // Redécoupage du paquet PS issu du flux TS en paquets PS plus petits
    while (ptr_size>0) {
        PS_chunk chunk(hdr, *this, eBType);

        added_bytes += chunk.build(start, ptr, ptr_size);
        chunk.write_to_file();
        start = false;
    }

    cCapture.byte_count += added_bytes;
}
Les plantages BSOD sont très certainement dûs, eux, à un pilote de tuner mal conçu qui ne supporte pas que les données s'engorgent devant lui, conséquence indirecte du plantage de l'application.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
Avatar de l’utilisateur
Gingko
Administrateur du site et développeur
 
Messages: 1953
Enregistré le: 05 Aoû 2007, 12:57
Localisation: Pantin (IDF, 93)

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Messagepar Curtis » 22 Avr 2011, 23:24

j'ai appliqué le correctif proposé par Gingko en ajoutant cette ligne dans capture.cpp :

Code: Tout sélectionner
// Ignorer si on n'a pas un en-tête PS conforme au début
    if (!hdr.isPS())
        return;


mais ça ne résout pas le problème chez moi lorsque j'enregistre en mode PS une chaine connue pour ses problèmes de réception ( signal antenne médiocre car l'émetteur est situé très loin, il s'agit d'une chaine locale que normalement je ne suis pas censé recevoir mais comme je suis en limite de réception ça passe quand même, c'est grâce à l'arrêt de l'analogique, cet émetteur lointain a pu augmenter sa puissance d'émission ), avec ce correctif pouchintvmod version 286 ne répond plus, il n'y a plus de message d'erreur mais l'application ne répond plus dès le premier décrochage de l'image, impossible de stopper l'enregistrement, je n'arrive même plus à tuer le processus via le gestionnaire de tâches, la seule solution étant alors de redémarrer windows xp,

je pense que le plus raisonnable serait de retirer cette option "enregistrement PS" dans la prochaine révision en attendant le véritable correctif ( refonte totale de la fonctionnalité enregistrement PS ), étant donné que la fonctionnalité "TS" est beaucoup plus robuste elle peut donc remplacer sans problèmes cette fonctionnalité PS qui n'est pas suffisamment stable et qui peut entrainer des écrans bleus sur des pilotes de cartes tuner mal écrits
Modifié en dernier par Curtis le 23 Avr 2011, 00:05, modifié 3 fois.
Curtis
 
Messages: 164
Enregistré le: 27 Fév 2010, 21:15

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Messagepar Curtis » 23 Avr 2011, 00:00

big_rapha100e a écrit:J'arrive à présent à reproduire le problème, pourrais tu m'expliquer la méthode utilisée avec Visual Studio pour localiser le souci ? Merci d'avance


- tu compiles une version de débogage de pouchintvmod version 286 ( ça devrait marcher aussi en version release si des symboles de débogage ont été inserés lors de la compilation ),

- tu lances ( en dehors de visual studio ) pouchintvmod,

- tu fais en sorte que le code source de pouchintvmod soit ouvert dans visual studio

- tu vas dans le menu "déboguer, attacher au processus" et tu selectionnes pouchintvmod dans la liste des processus,

- dès le plantage de pouchintvmod visual studio indiquera au niveau du code source le fichier et la ligne où la dernière instruction a été executé

- on peut aussi placer des points d'arrêt dans le code source ( un point rouge en face de la ligne de code ) pour interrompre volontairement le programme à cet endroit afin d'inspecter le contenu de certaines variables et de suivre pas à pas l'execution du programme ( le principe du débogage )
Curtis
 
Messages: 164
Enregistré le: 27 Fév 2010, 21:15

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Messagepar Gingko » 23 Avr 2011, 00:44

Curtis a écrit:jmais ça ne résout pas le problème chez moi lorsque j'enregistre en mode PS une chaine connue pour ses problèmes de réception ( signal antenne médiocre ), avec ce correctif pouchintvmod version 286 ne répond plus, il n'y a plus de message d'erreur mais l'application ne répond plus dès le premier décrochage de l'image, impossible de stopper l'enregistrement, je n'arrive même plus à tuer le processus via le gestionnaire de tâches, la seule solution étant alors de redémarrer windows xp,

je pense que le plus raisonnable serait de retirer cette option "enregistrement PS" dans la prochaine révision en attendant le véritable correctif ( refonte totale de la fonctionnalité enregistrement PS ), étant donné que la fonctionnalité "TS" est beaucoup plus robuste elle peut donc remplacer sans problèmes cette fonctionnalité PS qui n'est pas suffisamment stable et qui peut entrainer des écrans bleus sur des pilotes de cartes tuner mal écrits
Personnellement, les essais que j'ai faits dans les conditions que vous avez décrites avaient bien produit un plantage du programme, mais à aucun moment je ne me suis trouvé dans une situation où l'application restait présente et ne répondait plus, ou bien à avoir un plantage de type « écran bleu ».

Si vous rencontrez un blocage irrécupérable, je vous encourage à revérifier le problème est bien lié à l'enregistrement PS et non pas à un problème de votre tuner.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
Avatar de l’utilisateur
Gingko
Administrateur du site et développeur
 
Messages: 1953
Enregistré le: 05 Aoû 2007, 12:57
Localisation: Pantin (IDF, 93)

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Messagepar Curtis » 23 Avr 2011, 01:10

mais est-ce qu'avec votre correctif vous n'avez plus de problème de plantage de pouchintvmod chez vous en utilisant la fonctionnalité d'enregistrement PS ?

ce qui est sûr chez moi c'est que le problème déclenchant est la fonctionnalité d'enregistrement PS et une chaine qu'on reçoit très mal ( avec les autres chaines il est difficile de reproduire ce bug, le signal étant beaucoup plus robuste car l'émetteur est situé à moins de 5 kilomètres de chez moi ),

après l'écran bleu et/ou le blocage de l'application est sans doute déclenché par un pilote de tuner mal écrit,

en tout cas je ne peux pas compter sur une mise à jour du pilote de la leadtek DTV1800H, car il n'y a plus rien depuis 2009 sur le site du fabricant de cette carte tuner :?

et je n'ai pas d'autres tuners pour voir s'il y a une différence de comportement
Curtis
 
Messages: 164
Enregistré le: 27 Fév 2010, 21:15

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Messagepar Gingko » 23 Avr 2011, 01:19

Curtis a écrit:mais est-ce qu'avec votre correctif vous n'avez plus de problème de plantage de pouchintvmod chez vous en utilisant la fonctionnalité d'enregistrement PS ?
J'ai fait ça assez vite, difficile de dire qu'il ne pourrait plus y en avoir du tout, mais en tout ils seraient considérablement moins probables.

Je vais sans doute ajouter d'autres garde-fous avant la version finale, mais ceux-ci viseraient de toutes façons des situations beaucoup plus anecdotiques.

Curtis a écrit:ce qui est sûr chez moi c'est que le problème déclenchant est la fonctionnalité d'enregistrement PS et une chaine qu'on reçoit très mal ( avec les autres chaines il est difficile de reproduire ce bug, le signal étant beaucoup plus robuste car l'émetteur est situé à moins de 5 kilomètres de chez moi ),

après l'écran bleu et/ou le blocage de l'application est sans doute déclenché par un pilote de tuner mal écrit,

en tout cas je ne peux pas compter sur une mise à jour du pilote de la leadtek DTV1800H, car il n'y a plus rien depuis 2009 sur le site du fabricant de cette carte tuner :?

et je n'ai pas d'autres tuners pour voir s'il y a une différence de comportement
Vous pouvez toujours essayer d'installer une version plus ancienne.

Avec certains tuners, j'ai déjà vu des situations où ça a marché. :)

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
Avatar de l’utilisateur
Gingko
Administrateur du site et développeur
 
Messages: 1953
Enregistré le: 05 Aoû 2007, 12:57
Localisation: Pantin (IDF, 93)


Retourner vers Développement

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

cron