La soluzione per SIGSEGV si verifica in com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl

Problema

A volte ci sono dei crash di JVM con un SEGV, tutti avvenuti all'interno del codice JIT compilato in com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl. E' possibile che qui ci sia un bug di Java, ma uno sembra influenzare un insieme molto localizzato di metodi.

C'è una soluzione specificando i parametri JIT per questa classe che sembra alleviare il problema. Questo compito è quello di catturare e documentare la soluzione e le circostanze in cui è applicabile.

Chi ha bisogno di questa soluzione?

  • Si sta utilizzando Social community Extension con un fornitore di Social Cloud Storage configurato.
  • Se stai eseguendo AEM su Linux a 64 bit utilizzando Oracle 64-bit JVM versione 1.7.
  • Si verifica un arresto anomalo di JVM con Adobe Experience Manager.
  • I crash di JVM sono riportati in com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl
    JVM crashes are accompanied by a file hs_err_pid<<PROCESS-ID>>.log appearing in the crx-quickstart directory of CQ. Le informazioni di base sulla causa del crash della JVM compaiono in questo file. Cerca qualcosa di simile nel caso di crash di questo indirizzo di soluzione:
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00002aaaabf4d59c, pid=17837, tid=1276991808
#
# JRE version: Java(TM) SE Runtime Environment (7.0_65-b17) (build 1.7.0_65-b17)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 3816 C2 com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl.readDocument(Ljava/lang/String;)Ljava/util/Map; (287 bytes) @ 0x00002aaaabf4d59c [0x00002aaaabf4d4e0+0xbc]

L'informazione critica è l'ultima riga di questo esempio che mostra il frame problematico che coinvolge com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl, un componente del connettore del servizio cloud.

Qual è la soluzione?

La soluzione utilizza due approcci: usa una versione di JVM meno incline a sperimentare il problema, e usa un'opzione JVM per disabilitare la compilazione nativa del codice specifico del problema.
Al momento della pubblicazione di questa nota, l'ultima versione di Java 1.7 disponibile da Oracle è 1.7_65. La raccomandazione di questa soluzione è di passare a 1.7_65 da qualsiasi versione precedente.
Usando 1.7_65, la soluzione è ulteriormente disabilitare la compilazione just in time (JIT) di una specifica classe di problema e metodo tramite l'opzione Java -XX:CompileCommand=exclude. In particolare, -XX:CompileCommand=exclude,com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl::readDocument"

Come posso implementare questa soluzione nel mio ambiente?

Questa implementazione richiede la verifica ed eventualmente l'aggiornamento della versione di Java installata e l'aggiornamento dello script di avvio utilizzato per avviare AEM. Per aggiornare Java, consultare la documentazione Oracle per quanto riguarda la scelta, il download, l'installazione e la configurazione di jdk1.7.0_65 a 64 bit per Linux x86-64.

Generalmente si raccomanda che AEM venga avviato tramite gli script di avvio che si trovano in crx-quickstart/bin/bin/start. È comune, tuttavia, l'utilizzo di script di avvio personalizzati. Nel caso in cui si utilizzi crx-quickstart/bin/bin/start, è necessario aggiungere la seguente opzione:

CQ_JVM_OPTS="${CQ_JVM_OPTS} -XX:CompileCommand=exclude,com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl::readDocument"


NOTA: è necessario guardare il bin/start predefinito e vedere esattamente dove questo dovrebbe appartenere.

Logo Adobe

Accedi al tuo account