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.
Répondre
Curtis
Messages : 164
Enregistré le : 27 févr. 2010, 21:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Debugging plantage enregistrement PS + mauvaise réception

Message par 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 10634 fois
ptvm_erreur_crash.png
ptvm_erreur_crash.png (2.91 Kio) Vu 10634 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évr. 2010, 21:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Message par 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

Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1959
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Message par 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

big_rapha100e
Messages : 15
Enregistré le : 18 avr. 2011, 19:54
Carte Tuner : AverTV Duo Hybrid PCI-E II, AverTV Red HD+
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Message par 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

Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1959
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Message par 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

Curtis
Messages : 164
Enregistré le : 27 févr. 2010, 21:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Message par 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évr. 2010, 21:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Pouchin TV Mod 0.6.2.286 Release Candidate 2

Message par 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 )

Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1959
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Message par 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

Curtis
Messages : 164
Enregistré le : 27 févr. 2010, 21:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Message par 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

Avatar du membre
Gingko
Administrateur du site et développeur
Messages : 1959
Enregistré le : 05 août 2007, 12:57
Carte Tuner : (champ trop court pour énumérer 8 tuners)
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Debugging plantage enregistrement PS + mauvaise réceptio

Message par 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

Répondre