Il Problema
Al primo avvio assoluto di SLPCT nella sessione utente su distribuzioni Linux con OpenJDK 8, l'applicazione subisce un GUI freeze (congelamento dell'interfaccia) o causa un blocco temporaneo dello schermo. Ai tentativi successivi il problema non si ripresenta grazie al caching delle risorse grafiche.
Causa tecnica
Il blocco è dovuto a un deadlock dell'Event Dispatch Thread (EDT) di Java AWT/Swing. Nello specifico, OpenJDK 8 tenta di inizializzare l'accelerazione hardware tramite la pipeline XRender; l'asincronia o il leggero ritardo di risposta del server grafico (Xorg/XWayland) manda in loop il thread grafico di Java, bloccando il rendering della finestra.
L'incompatibilità grafica di XRender al primo avvio è accentuata dal carico iniziale richiesto da OpenJDK 8 per caricare le estensioni di sicurezza e cifratura (JCE/Oracle policy) posizionate in
Il blocco è dovuto a un deadlock dell'Event Dispatch Thread (EDT) di Java AWT/Swing. Nello specifico, OpenJDK 8 tenta di inizializzare l'accelerazione hardware tramite la pipeline XRender; l'asincronia o il leggero ritardo di risposta del server grafico (Xorg/XWayland) manda in loop il thread grafico di Java, bloccando il rendering della finestra.
L'incompatibilità grafica di XRender al primo avvio è accentuata dal carico iniziale richiesto da OpenJDK 8 per caricare le estensioni di sicurezza e cifratura (JCE/Oracle policy) posizionate in
/usr/lib/jvm/, necessarie a SLPCT per la firma e la creazione della busta.La Soluzione:
per risolvere definitivamente, è necessario disabilitare la pipeline XRender per l'applicazione, forzando Java a utilizzare il rendering standard (estremamente stabile).
per risolvere definitivamente, è necessario disabilitare la pipeline XRender per l'applicazione, forzando Java a utilizzare il rendering standard (estremamente stabile).
Procedura guidata:
1 aprire il file manager (es. Nautilus) con privilegi di amministratore per poter modificare i file di sistema nella cartella
1 aprire il file manager (es. Nautilus) con privilegi di amministratore per poter modificare i file di sistema nella cartella
/usr2 individuare e aprire il file di avvio di SLPCT, solitamente posizionato in:
/usr/es/SLpct/slpct_run
3 individuare l'ultima riga dello script (quella che lancia il file .jar):
java -Xms128m -Xmx2048m -jar "SLpct.jar" "$@"
4 Modificarla inserendo il flag -Dsun.java2d.xrender=false subito dopo il comando java:
java -Dsun.java2d.xrender=false -Xms128m -Xmx2048m -jar "SLpct.jar" "$@
5 salvare il file e chiudere.
Al riavvio successivo, SLPCT si aprirà istantaneamente fin dal primo tentativo, senza alcun compromesso sulle funzionalità del redattore atti.
Avv. Mario Del Pretaro
Nessun commento:
Posta un commento