Erreur sous PARROT, UBUNTU et MINT...

Codes specifiques à Linux
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Erreur sous PARROT, UBUNTU et MINT...

Message par Ar-S »

Je laisse une chance (encore) à PB et LINUX.. Après de multiples déboires, j'airrive à le lancer.

J'ai réaliser un soft de récupération de liens. Un gestionnaire de téléchargement en gros.
On ajoute X liens dans une liste chainée et on clique sur télécharger.
Les téléchargements se font un par un dans un thread que voici.

Je précise que sous windows le soft marche... Mais sous linux, lorsque je clique sur mon bouton telecharger.
Mon thread se lance mais j'ai une erreur dans ma proce.

Voilà les logs du débug et la proce en question.
Merci pour votre aide.

Code : Tout sélectionner

[22:43:23] Waiting for executable to start...
[22:43:23] Executable type: Linux - x64  (64bit, Unicode, Thread)
[22:43:23] Executable started.
[22:43:23] [WARNING] 6.2MAC.pb (Line: 1)
[22:43:23] [WARNING] GLib-GIO (DEBUG): _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GIO (DEBUG): _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (CRITICAL): g_value_take_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (WARNING): ../../../gobject/gtype.c:4268: type id '0' is invalid
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (WARNING): can't peek value table for type '<invalid>' which is not currently referenced
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (WARNING): ../../../gobject/gvalue.c:185: cannot initialize GValue with type '(null)', this type has no GTypeValueTable implementation
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (CRITICAL): g_value_type_compatible: assertion 'src_type' failed
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (CRITICAL): g_value_copy: assertion 'g_value_type_compatible (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value))' failed
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (CRITICAL): g_value_type_compatible: assertion 'src_type' failed
[22:43:50] [WARNING] 6.2MAC.pb (Line: 695)
[22:43:50] [WARNING] GLib-GObject (WARNING): unable to set property 'text' of type 'gchararray' from value of type '(null)'
[22:44:07] The Program was killed.

Code : Tout sélectionner

Procedure DDownload(*ldvm)
  Protected LASTPATH$, PATH$
  
  N = ListSize (link())
  Debug ""
  Debug " --- TELECH ---------------------"
  Debug Str(n) + " liens détecté(s)"
  
  DisableGadget(#BT_SUPPR,1)
  DisableGadget(#BT_ADDLINK,1)
  DisableGadget(#BT_DOWNLOAD,1)
  

  
  If LASTPATH$ = "" : LASTPATH$ = GetCurrentDirectory() : EndIf
  PATH$ = PathRequester("Choisissez un dossier de sauvegarde",LASTPATH$)
  LASTPATH$ = PATH$ ; <--- Sous linux erreur ICI
  
  ForEach LINK()
    Q = 0
    Fichier$ = LINK()\NAME
    
    ; ;Debut du téléchargement
    F$ = GetFilePart(Fichier$,#PB_FileSystem_NoExtension)
    Telechargement = ReceiveHTTPFile(Link()\DIRECTURL, PATH$+Fichier$, #PB_HTTP_Asynchronous)
    Size = Val(link()\SIZE)
    
    If Telechargement
      Repeat
        Progression = HTTPProgress(Telechargement)
        Select Progression
          Case #PB_HTTP_Success
            Taille = FinishHTTP(Telechargement)
            SetGadgetText(#info,"Téléchargement terminé (Taille: " + Taille + ") 100% " )
            If PlayS = #True : PlaySound(#SON) : EndIf
            SetGadgetState(#PBar1,100)
            Q = 1
            
          Case #PB_HTTP_Failed
            SetGadgetText(#info,"Le téléchargement a échoué")
            If PlayS = #True : PlaySound(#SON) : EndIf
            SetGadgetState(#PBar1,0)
            Q = 1
            
          Case #PB_HTTP_Aborted
            SetGadgetText(#info,"Le téléchargement a été interrompu")
            SetGadgetState(#PBar1,0)
            Q = 1
            
          Default
            If size <> 0
              F$ = GetFilePart(Fichier$,#PB_FileSystem_NoExtension)
              Progression$ = StrF((Progression / Size) * 100, 0)
              SetGadgetText(#info, "Téléchargement de " + f$ +" "+ Progression$ + "%" )
              SetGadgetState(#PBar1,(Progression / Size) * 100)
            EndIf
            
        EndSelect
        ;    
        Delay(500) ; Libérer le CPU
      Until Q = 1
      
    Else
      Debug "Erreur de téléchargement"
    EndIf 
    
  Next
  
  ClearList(LINK())
  ClearGadgetItems(#combo)
  DisableGadget(#BT_ADDLINK,0)
  UpdateCombo()
 Off()
  
  
EndProcedure
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Erreur sous PARROT, UBUNTU et MINT...

Message par Ollivier »

Est-ce que tu peux tester GetCurrentDirectory$() ?
Puis PathRequester() ?

Tout seul(s)
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Erreur sous PARROT, UBUNTU et MINT...

Message par Ar-S »

Merci.

Getcurrent seul :

Code : Tout sélectionner

PATH$ = /home/nomutilisateur/Téléchargements/purebasic/compilers/
Ensuite si j'ajoute

Code : Tout sélectionner

PATH$ = GetCurrentDirectory()
Debug "PATH$ = " + PATH$
test$ = PathRequester("",PATH$)
Debug "TEST$ = " + test$

Code : Tout sélectionner

ça me retourne TEST$ = /home/nomutilisateur/Téléchargements/purebasic/compilers/
Mais dans le compilo
[12 :51 :38] Attente du démarrage du programme...
[12 :51 :38] Type d'exécutable: Linux - x64 (64bit, Unicode)
[12 :51 :38] Exécutable démarré.
[12 :51 :38] Exécution du programme terminée.
[12 :52 :42] Attente du démarrage du programme...
[12 :52 :42] Type d'exécutable: Linux - x64 (64bit, Unicode)
[12 :52 :42] Exécutable démarré.
[12 :52 :42] [AVERTISSEMENT] Ligne: 3
[12 :52 :42] [AVERTISSEMENT] GLib-GIO (DEBUG): _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’
[12 :52 :42] [AVERTISSEMENT] Ligne: 3
[12 :52 :42] [AVERTISSEMENT] GLib-GIO (DEBUG): _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’
[12 :52 :47] Exécution du programme terminée.
Cependant dans soft complet mon requester s'ouvre mais la fenêtre est gelée sans que je ne puis rien n'y faire sinon tuer le prog via la croix rouge de l'ide.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Erreur sous PARROT, UBUNTU et MINT...

Message par Ollivier »

Tu as un caractère UTF8 "â schtroumpf schtroumpf" qui fait balises autour de deux expressions :

1) gio-vfs
2) gsettings-backend

https://developer.gnome.org/gio/stable/ ... -apps.html

Est-ce que tu peux faire un petit double prog serveur/client par les pipes qui servira de cobaye ?

Un prog client qui ouvre une console, affiche les variables d'environnement puis attend l'appui sur [Entrée].

Un prog serveur (pipe ouverte en lecture et en écriture) qui récupère l'affichage du client, le stocke, simule par la pipe la touche [Entrée].

Je soupçonne un problème de type de chaîne... Mais ce n'est qu'un soupçon.

added : page "parent" du lien ci-dessus : https://developer.gnome.org/gio/stable/GVfs.html

Et si ça te barbe, teste SANS débogueur PureBasic pour voir si ça se gamelle. Si ça ne se gamelle pas, force le débogueur à travailler en ASCII plutôt qu'en UTF-8.

Voilà mes quelques impressions bien "abstraites" du problème...
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: Erreur sous PARROT, UBUNTU et MINT...

Message par zaphod_b »

Sous linux la gestion des threads est plus tatillonne que sous windows.

Essaye d'enlever tous les setgadgetstate et setgadgettext.
Il faut passer les affichages via postevent au thread principal (la boucle d'event)

J'espère que ça aide.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Erreur sous PARROT, UBUNTU et MINT...

Message par Ar-S »

Merci à vous, semaine chargée, pas pu encore m'y remettre.
Je test dès que possible

--- EDIT ----
J'ai toujours le message GIO dans le compilo mais en déplaçant tout ce qui est PathRequester hors du Thread, le programme compilé marche !
Je crois vraiment que PB et linux c'est pas encore ça.. Mais en tout cas ça a l'air de fonctionner. Merci de vos conseils.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre