PDA

View Full Version : [Java <-JNI-> C++(MFC)] System.loadLibrary bloccante in Win 7


Gimli[2BV!2B]
16-04-2011, 01:21
Quadro della situazione in Win XP (x64, ergo 2003):

una classe Java viene inizializzata e carica una serie di dll (librerie comuni, open source) tramite System.loadLibrary
per finire viene caricata una dll MFC (sempre con loadLibrary)
tutto funziona a meraviglia


Quadro della situazione in Win 7 (x64):

una classe Java viene inizializzata e carica una serie di dll (librerie comuni, open source) tramite System.loadLibrary
per finire viene caricata una dll MFC (sempre con loadLibrary)
... nulla... processo Java aperto ma completamente inerte...

ma, attenzione! Qualche volta funziona! Personalmente l'ho vista avviarsi più volte, ma solo al primo lancio dopo l'avvio del sistema.



Qualche suggerimento per poter analizzare cosa succede?

In debug Java l'unica informazione che ricavo è che l'ultima istruzione lanciata è la loadLibrary.
Un debug C++ serio non è stato ancora possibile. Lo strano comportamento mi fa propendere a considerare un problema nella dll, ma voglio essere certo di aver escluso qualsiasi altra possibilità e vorrei capire che succede.

È possibile che Win 7 la bolli come dannosa e ne impedisca il caricamento? Ah, ora mi viene in mente che c'è un Symantec da considerare, dovrò controllarlo...
Nei log di sistema non trovo tracce di errori.
In Win 7 le dipendenze della dll MFC con dll di sistema sono leggermente differenti e sembrano essere parzialmente insoddisfatte, in termini di alcune funzioni non agganciate in dll non di prima dipendenza.

Anche osservazioni ovvie sono ben accette, non sono praticissimo né del debug in Java né di Win 7 e potrei non conoscere cose banali.

Freaxxx
16-04-2011, 01:53
non conosco il lato concernente la programmazione, per quanto riguarda il tuo problema, ma Windows 7 ha in più, rispetto ad XP, anche l'UAC come componente fondamentale di sistema, in pratica l'UAC è il software che gestisce i permessi di alto livello, quello che ti fa comparire la finestra con "si" e "no" quando vuoi installare qualsiasi cosa, e gestisce anche qualsiasi accesso a parti limitate del sistema come può esserlo il filesystem in certe directory come quelle dove sono di solito installati i programmi.

PS
l'UAC può anche influire sui protocolli di rete, personalmente quando programmo e quindi faccio un test dell'applicazione, mi capita di doverlo disabilitare spesso per non avere problemi ( ovvero avviare l'applicazione con diritti di amministratore ).

Gimli[2BV!2B]
16-04-2011, 13:32
UAC, sì, giusto, al momento l'ho trascurato.
Grazie mille del suggerimento.

Quindi proverò ad utilizzare lo Standard User Analyzer (http://technet.microsoft.com/en-us/library/cc765948(WS.10).aspx).

Ho trovato anche un simpatico elenco di comuni problemi riscontrati (http://technet.microsoft.com/en-us/library/cc722305(WS.10).aspx), ho già alcuni candidati.