Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Double ouverture de base sqlite

Envoyé par : teddyber

Date : 03/10/2009 16:49

Bonjour,

je rencontre un problème avec une petite appli/extension développée par moi-même et qui fonctionnait bien en ff2.x et ff3.0 Depuis ff3.5, ça plante méchamment en prenant 95% de CPU, je suis forcé de tuer Firefox pour reprendre la main sur le système...

j'ai cerné le problème à un moment précis: l'ouverture d'une seconde connexion à une même base sqlite (quoique j'ai pas essayé d'ouvrir deux bases différentes en mm temps...)

En gros, lorsque mon extension se lance, elle ouvre automatiquement une base (chemin présent dans un paramètre de config). Tout se pase bien lorsque je navigue dans l'appli jusqu'à ce que j'arrive sur un textbox autocomplete qui va aider la saisie en cherchant des valeurs dans la base. Le composant que j'ai développé lance sa propre connexion puisque je n'ai pas su à l'époque comment transmettre une connexion existante...

Autre cas de plantage: CTRL-F5. l'extension se recharge et ouvre une connexion vers la base => CPU à fond, même sanction.

j'ai cru comprendre que la méthode openDatabase était relativement optimisée pour partager les connexion établies et éviter la corruption de bases mais là, je suis un peu embêté (openUncharedDatabase me donne le même résultat au passage...)

si quelqu'un voit de quoi je parle, a une solution ou des suggestions, je suis pour! ;)

merci d'avance.

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 03/10/2009 16:56

test fait à l'instant: en ouvrant une autre base en parallèle, même sanction...

NB: tests faits sous winXP pour l'instant...

# Re: Double ouverture de base sqlite

Envoyé par : Raphael

Date : 04/10/2009 09:03

Perso avec XR 1.9.1 sous Linux, ça passe toujours très bien l'ouverture de plusieurs bases en "parallèle".

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 04/10/2009 16:29

et avec l'extension SQLite Manager, ça marche nickel, je peux charger les bases les unes après les autres sans soucis.

Dans mon extension, dès que je veux charger une autre base en parallèle ou bien après une précédente, le CPU monte en flèche et plus de ff...

et je ne vois pas ce qui coince dans mon code par rapport à SQLite Manager...

Il y a moyen d'activer des traces dans FF pour savoir ce qu'il fait?

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 04/10/2009 17:31

ah et autre symptôme cause déclenchant le même symptôme: lancer l'extension et fermer Firefox!

et puis en fait je reproduis le problème sur ff3.0.14 en mode portable...

je vais devenir dingue

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 04/10/2009 18:02

Bon, je progresse.

La version 3.0.10 de ff est OK. la version 3.0.11 plante. les différences entre les deux concernent pour partie SQlite: https://bugzilla.mozilla.org/buglist.cgi?keywords_type=anywords&keywords=fixed1.9.0.11+verified1.9.0.11

maintenant comment je peux avancer plus? fournir mon extension sur bugzilla en rouvrant le bug qui parle du chgt de version de SQLite histoire que quelqu'un se penche sur le sujet?

# Re: Double ouverture de base sqlite

Envoyé par : thefab

Date : 04/10/2009 22:23

Pour partager les connections et éviter de devoir l'ouvrir 2 fois le mieux est de faire un composant XPCOM (service) qui gère les requêtes SQL et appeler le service pour obtenir les données.

J'ai une démo d'un champs autocomplète depuis une base SQLite, je la met à dispo dès que je remets la main dessus...

# Re: Double ouverture de base sqlite

Envoyé par : thefab

Date : 07/10/2009 10:26

Voilà un exemple d'autocomplete qui passe par un service XPCOM pour fournir les données depuis une base SQLite. Plus besoin d'ouvrir plusieurs connections vers la base, c'est le service qui le fait une fois et ensuite on demande les données au service, pareil pour l'autocomplete.

Démo SQLite AutoComplete

# Re: Double ouverture de base sqlite

Envoyé par : obs

Date : 07/10/2009 10:49

Je pense que j'ai le même souci que toi. Mais de mon coté je n'ouvre pas plusieurs connexions.

Lorsque je quitte mon appli, ça freeze. Et je suis aussi en train de devenir dingue.

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 07/10/2009 11:18

héhé. alors oui je suis d'accord, pas besoin d'ouvrir une nouvelle base pour que ça plante. j'ai fait plein de tests ce we et j'ai fait un beau bug : https://bugzilla.mozilla.org/show_bug.cg(..)

en gros, ça marche jusqu'en 3.0.10 et plus à partir de la 3.0.11. le bug apparait lors d'un second openDatabse ou de la fermeture de l'appli. Est-ce que tu peux tenter de voir si tu as la même différence entre ces deux versions (c'est assez rapide à tester avec des firefox portable). Si oui, soutiens le bug ;)

j'ai joint un crash report qui montre que le problème apparait dans les fonctions qui tentent de libérer la mémoire utilisée par la connexion : http://crash-stats.mozilla.com/report/in(..)

pour l'instant pas de news et pas encore le temps de me mettre à étudier sqlite3.c et jemalloc.c en détails...

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 07/10/2009 13:38

ah oui derminer point amusant: l'extension SQLite Manager fonctionne très bien avec toutes les versions de FF. Et je vois pas ce qu'elle fait de particulier pour que ça marche bien...

# Re: Double ouverture de base sqlite

Envoyé par : obs

Date : 07/10/2009 13:44

Essai avec les nightly de 1.9.2, je n'ai plus de bug. Par contre je ne sais pas comment tu va faire si c'est une extension firefox.

De ce que j'ai pu avoir comme renseignement (merci laurentj) il y a une différence de version sqlite.

# Re: Double ouverture de base sqlite

Envoyé par : laurentj

Date : 07/10/2009 13:54

La difference entre FF 3.0.10 et 3.0.11 : c'est la version de sqlite, ils ont mis à jour, de la version 3.5.9 à 3.6.7.

  • Sur la branche FF 3.5, c'est 3.6.16 (pour la prochaine release de 3.5.4)
  • Sur la branche FF 3.6, c'est aussi 3.6.16
  • Sur le trunk, c'est 3.6.18

Voir bug 508104 et bug 503770.

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 07/10/2009 14:02

J'ai bien vu cette différence (https://bugzilla.mozilla.org/buglist.cgi(..)) mais je ne suis pas absolument certain que ça vienne de là en fait. (bien que j'y crois fort)

Si je comprends comment fait SQLite Manager pour ne pas subir ce bug, je serais très heureux de l'appliquer de mon coté aussi...

XR1.9.2 (qui semble marcher selon obs) c'est pour FF3.6?

# Re: Double ouverture de base sqlite

Envoyé par : teddyber

Date : 13/10/2009 17:09

Bon ben le bug semble disparu en 3.5.4. Tout roule... C'était la version de SQLite qui buggait.

Par contre comment on pouvait éviter le pb (voir SQLite Manager), pas d'idée.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.