Bug erreur StackOverflowException

Signaler
Messages postés
5
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
27 juillet 2007
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
j'ai un bug dans mon application il s'agit d'un StackOverflowException le bug ce produit sur cette ligne de code :

if (!SQLdata.SQLCheckparsed(url) && !SQLdata.SQLcheckbandomain(domain) && !SQLclass1.SQLcheckexist(url)){

[...]}

voici le constructeur de ma class:

public SchedulerRepository(
string repo,
string cnx,
string cs,
int ml,
int md){

// Repository location

this.repository = repo;

// Dal

this.SQLdata =
new
SQLClass(cs, ml, md);

this.SQLclass1 =
new
SQLClass(cnx, 0, 0);

// Regexp

this.check_link =
new
Regex(
@"127\.0\.0\.(1|0)|255\.(0|255)\.(0|255)\.(0|255)|http:\/\/(\[::1\]|localhost)",
this.options);}

je déclare les variable récalcitrante ainsi

SQLClass SQLdata;
// scheduler database

SQLClass SQLclass1;
// main database

sa fait des heures que je cherche ou est problème

merci de votre aide

6 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Vérifie que tu n'as pas des appels récursifs dans tes méthodes SQLCheckparsed, SQLcheckbandomain et SQLcheckexist.
Vérifie aussi que ce n'est pas un bug connu du provider SQL utilisé.
Sinon en dehors de ça avec ce que tu as fournis on ne pourra pas te dire grand chose de plus.
Des détails supplémentaire comme la stack trace accompagnant l'exception aideront peut être à y voir plus clair.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Salut !
Rien à voir mais je doute que ton expression régulière soit bonne.
Voici ce qu'elle match :
127.0.0.1 [OK]
127.0.0.0 [Ne devrait pas matcher, c'est une adresse de réseaux, pas d'equipement]
255.0.0.0 [Ne devrait pas matcher, c'est un masque de class A]
255.255.0.0 [Ne devrait pas matcher, c'est un masque de class B]
255.255.255.0 [Ne devrait pas marcher, c'est un masque de class C]
255.255.255.255 [Ne devrait pas matcher, c'est un masque réservé inutilisable]
http://[::1\]????(ca veux dire quoi cette notation ?)
http://localhost [Ne devrait pas matcher car indique un protocole réseaux (http) invalide]

normalement les / n'ont pas besoin d'etre echapés.

Maintenant, je suis un pro des expressions régulières et c'est peut-etre ce que
tu voulait faire.
Messages postés
5
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
27 juillet 2007

Ma regexp me sert a filtrer des url: [http://[::1 http://[::1]] équivalent ipv6 de http://localhost

Concernant mon problème celui ci est maintenant réglé il etait du a une clause finally mal foutue dans mes fonctions de connection SQLcheck();

Maintenant j'ai un autre problème comme vous pouvez voir dans le code que j'ai posté j'ai deux objets de type SQLclass:

this.SQLdata = newSQLClass(cs, ml, md);

this.SQLclass1 = newSQLClass(cnx, 0, 0);

Dès que j'essaie d'exécuter une fonction par exemple SQLcheckbandomain bah .Net me dit qu'un DataReader estdéjà ouvert et doit d'abord être fermé :| .

A noté que ma class SchedulerRepository s'exécute dans un thread
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Ce qui veut dire que la connexion est commune à toutes les instances de la classe ? o_O

Quel SGBD ?
Sur SQL Server 2005 il peut y avoir plusieurs jeux de résultats actifs sur la même connexion avec MARS, mais pas sur SQL Server 2000 (et sur les autres SGBD je ne sais pas).

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
5
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
27 juillet 2007

Il s'agit d'SQL server 2005 , en fait j'utilise deux connexions a deux db différentes !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Dans tous les cas tu as déjà un DataReader ouvert si on en crois le message d'erreur.
Tu as donc un problème dans ton code.

/*
coq
MVP Visual C#
CoqBlog
*/