Re: Migliorare Debian e il software libero: trovare bug con valgrind e scrivere le patch

2020-11-29 Per discussione Marco Bodrato

Il 2020-11-29 09:18 Davide Prina ha scritto:

Se invece hai una variabile che non è inizializzata, ma non è usata
(in nessun caso d'uso del programma), allora quella variabile è
inutile e andrebbe tolta.


Direi che il programmatore può tranquillamente decidere di lasciare 
questo banale compito di ottimizzazione al compilatore :-)


Ĝis,
m



Re: Migliorare Debian e il software libero: trovare bug con valgrind e scrivere le patch

2020-11-29 Per discussione Marco Bodrato

Il 2020-11-29 01:11 Sabrewolf ha scritto:

Il 28/11/20 17:47, Marco Bodrato ha scritto:

Le variabili non inizializzate, non sono un bug se il loro valore non
viene usato :-)


Ma anche no :)



int f(const char *s, int *p){
    return (s && atoi(s)%2) ? 12345 : (*p = 54321)%1;
}
int main(int argc, const char **argv){
    int no_init;
    if(argc > 1){
    int rval = f(*(argv+1), _init);
    printf("No init but always 12345 or 54321 eheh: %d\n", (rval) ?
rval : no_init);
    }
    return 0;
}


A parte che se si scrive codice così, il bug non c'è ancora ma spunterà 
presto, appena qualcuno proverà a metterci mano :-)


Comunque non vedo il punto, in questo codice il valore della variabile 
no_init viene usato solo se è stato inizializzato dandogli un valore, 
altrimenti rimane non inizializzata e non usata. Infatti valgrind non fa 
una piega:


$ valgrind -q ./prova 2
No init but always 12345 or 54321 eheh: 54321
$ valgrind -q ./prova 1
No init but always 12345 or 54321 eheh: 12345


Tra l'inizializzazione e l'uso ci potrebbe essere di mezzo un
assegnamento ;)


Certo, se prima di usarne il valore, lo assegni, allora la variabile non 
è più non inizializzata. Se volevi solo dire questo, ti sarebbe bastato 
il seguente codice come esempio, no?


int main() {
  int a;
  a = 0;
  return a;
}

Tieni conto che nei vecchi standard C, non era possibile dare un valore 
alle variabili contestualmente alla dichiarazione, non potevi scrivere 
"int uno = 1;".
Quindi ci sono tantissime dichiarazioni di variabili tipo "int a;" che 
non assegnano alcun valore.
È importante che il valore non venga usato, prima di essere in qualche 
modo definito, ma di certo nessuno dice che è necessario faro all'atto 
della dichiarazione della variabile.


Mi permetto di dire che il mio esempio con una semplice variabile intera 
nella quale il valore di alcuni bit è ben definito e il valore di altri 
no... mi sembrava un po' più raffinato :-) Anche perché l'oggeto di 
questa discussione mette al centro valgrind, che in quell'esempio si 
comporta in maniera tutt'altro che banale.


Ĝis,
m



Re: errori java

2020-11-29 Per discussione Dario
Il 29/11/2020 10:13, Filippo Dal Bosco - ha scritto:
> da alcuni giorni lanciando  pdfsam  con bullseye che aggiorno tutte le
> mattine
> 
> ottengo questo:
> 
> 
> Exception in thread "main" java.lang.NoClassDefFoundError: 
> org/sejda/injector/Injector
> at org.pdfsam.basic.App.main(App.java:34)
> Caused by: java.lang.ClassNotFoundException: org.sejda.injector.Injector
> at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> at 
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> ... 1 more
> 
> 
> problema java o problema pdfsam ?
> 

può essere un problema di java
può essere un problema di pdfsam

:)


Riguardo PDFSAM, hai provato quanto suggerito in blog [1] ?

In sintesi il suggerimento:
1. Verificare di avere java aggiornato
2. Utilizza lo script di startup *pdfsam.sh* fornito che trovi nella
sottocartella *bin* e verifica i messaggi di debug che ti segnala



[1]
https://blog.pdfsam.org/pdfsam-basic/debug-pdfsam-basic-doesnt-start/1842/




errori java

2020-11-29 Per discussione Filippo Dal Bosco -
da alcuni giorni lanciando  pdfsam  con bullseye che aggiorno tutte le
mattine

ottengo questo:


Exception in thread "main" java.lang.NoClassDefFoundError: 
org/sejda/injector/Injector
at org.pdfsam.basic.App.main(App.java:34)
Caused by: java.lang.ClassNotFoundException: org.sejda.injector.Injector
at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 1 more


problema java o problema pdfsam ?

-- 
Filippo



Re: Migliorare Debian e il software libero: trovare bug con valgrind e scrivere le patch

2020-11-29 Per discussione Davide Prina

On 29/11/20 01:11, Sabrewolf wrote:


Il 28/11/20 17:47, Marco Bodrato ha scritto:



Le variabili non inizializzate, non sono un bug se il loro valore non
viene usato :-)



Tra l'inizializzazione e l'uso ci potrebbe essere di mezzo un
assegnamento ;)


io intendo inizializzazione anche l'assegnamento prima dell'uso del suo 
contenuto.
L'importante è che prima di essere usato, il valore venga impostato con 
qualcosa.


Se invece hai una variabile che non è inizializzata, ma non è usata (in 
nessun caso d'uso del programma), allora quella variabile è inutile e 
andrebbe tolta.


Ciao
Davide
--
Elenco di software libero: http://tinyurl.com/eddgj
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook