Note su Solaris 10 5/08

Problemi durante l'esecuzione del debugger

I problemi descritti qui di seguito riguardano il debugger del kernel.

x86: Un segnale SIGTRAP inatteso provoca il blocco del debugger dbx (6546562)

Quando si utilizza il debugger dbx in Solaris 10, sulla piattaforma x86, per eseguire il debugging di un programma che produce e consegna segnali dotati di gestori, dbx può ricevere dal kernel un segnale SIGTRAP inatteso che provoca il blocco del debugger. Questa situazione si verifica quando dbx sta eseguendo le istruzioni una alla volta, eseguendo il codice fino a un punto d'interruzione, raccogliendo i dati RTC o eseguendo altre attività che utilizzano il trapping dei segnali.

In alcuni casi, dbx visualizza un avviso di segnale SIGTRAP inatteso al momento del blocco. Ad esempio:


dbx: internal warning: unexpected SIGTRAP!

In altri casi, dbx segnala la ricezione di un segnale SEGV. Ad esempio:


signal SEGV (no mapping at the fault address) in main at line 29 in file "test.c"

In questo caso, quando l'utente digita il comando cont -sig SEGV per proseguire l'esecuzione con il segnale SEGV, dbx visualizza l'avviso di SIGTRAP inatteso.

Il bug si verifica in Solaris 10 sulla piattaforma x86 dopo l'installazione della patch del kernel 127112.

Soluzione. Non installare la patch del kernel 127112 e disinstallarla se è già stata installata. Per maggiori informazioni su questo bug, vedere la pagina di Sun Studio Support News all'indirizzo http://developers.sun.com/sunstudio/support/news/index.jsp.

SPARC: Problemi con il debugger dbx nell'elaborazione di oggetti a 64 bit (6347707)

Il debugger dbx si interrompe con un errore di accesso alla memoria nell'elaborazione di determinati file eseguibili e librerie a 64 bit. Tuttavia, il problema non interessa l'utilizzo normale di questi oggetti a 64 bit. Viene visualizzato un messaggio di errore simile al seguente:


dbx: internal error: signal SIGBUS (invalid address alignment)

Soluzione. Utilizzare il debugger mdb o la funzione Solaris Dynamic Tracing. Queste soluzioni alternative sono in grado di diagnosticare i processi che utilizzano oggetti a 64 bit.

Il sistema può entrare in un ciclo infinito se viene modificata la CPU master (4405263)

Durante l'esecuzione del debugger del kernel di Solaris per la diagnosi di un sistema in funzione, il sistema può entrare in un ciclo con messaggi di errore incompleti. Il ciclo si verifica quando viene modificata la CPU master della PROM OpenBoot. Dopo il processo di ripristino, il sistema ritorna operativo. Tuttavia, le tracce dell'errore originale vanno perdute. Ciò significa che non è possibile eseguire una diagnosi dell'errore irreversibile.

Soluzione. Quando il sistema si trova al livello della PROM, viene visualizzato il prompt ok di OpenBoot. Nei sistemi con più CPU, il prompt ok è preceduto da un numero racchiuso tra parentesi graffe. Questo numero indica la CPU attiva nel sistema. Per eseguire la sessione di debug al livello della PROM, procedere come segue.

  1. Elevare pil a f digitando il comando seguente:


    {0} ok h# 0f pil!
    
  2. Usare il comando switch-cpu per passare selettivamente dalla CPU attualmente attiva ad altre CPU. Ad esempio, per passare dalla CPU #0 alla CPU #1, digitare il comando seguente:


    (0) ok 1 switch-cpu
    

    Il prompt ok è ora preceduto dal numero della nuova CPU attivata.


    {1} ok
  3. Eseguire il debugger.

  4. Al termine della sessione del debugger, eseguire un comando reset-all per tornare all'uso normale del sistema.


Nota –

Verificare di avere aggiornato il sistema all'ultima versione della PROM OpenBoot.