venerdì 26 giugno 2026

SL-PCT: risoluzione del freeze dell'applicazione al primo avvio su LINUX

 

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 /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).


Procedura guidata:
1 aprire il file manager (es. Nautilus) con privilegi di amministratore per poter modificare i file di sistema nella cartella /usr


2 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