Passa al contenuto principale

Recentemente ho individuato un apparente problema di compilazione per un cliente OpenVOS. Il cliente dispone di due moduli che eseguono OpenVOS Release 17.1. È riuscito a compilare correttamente un programma su uno dei due, ma il compilatore gcc ha segnalato un “errore interno del compilatore” quando ha provato a compilarlo sull’altro modulo. Ho cercato di riprodurre il problema qui, ma non ci sono riuscito. Mi è quindi venuto in mente che il problema dovesse essere specifico del modulo che presentava l'errore, piuttosto che un problema del compilatore. Inizialmente, ho pensato che potesse essere dovuto alle modifiche ai valori predefiniti dei limiti di comando che abbiamo apportato in OpenVOS Release 17.1. Numerosi programmi, tra cui gcc e gmake, falliranno nella Release 17.1 se i valori dei limiti di comando non sono impostati su valori coerenti, né su valori infiniti. Ma questo cliente aveva commentato il comando di esempio set_default_cmd_limits in module_start_up.cm, quindi stava già utilizzando valori infiniti, che è ciò che raccomandiamo in questa versione. Successivamente, ho chiesto al cliente di controllare il syserr_log al momento dell'errore del compilatore. Come previsto, ha trovato messaggi che indicavano che il suo modulo aveva esaurito lo spazio di paging. Anche se i limiti dello spazio di indirizzamento non limitavano il suo utilizzo, non aveva abbastanza spazio di paging e quindi il sistema operativo non ha avuto altra scelta che impedirgli di richiedere memoria virtuale aggiuntiva. Ciò ha portato a un'eccezione di indirizzamento in gcc, che ha portato al messaggio di errore oscuro. Una volta creato un nuovo file di paging su uno dei suoi dischi, è stato in grado di compilare il suo enorme programma sorgente.

La morale della storia è che, quando si verifica un errore insolito (uno che non si è mai visto prima o che non si capisce), non fa mai male dare un'occhiata al log syserr per vedere se OpenVOS ha registrato qualche messaggio. In questo caso, il log syserr conteneva una serie di messaggi che documentavano l'esaurimento dello spazio di paging. Dato che l'errore era riproducibile, il nesso era piuttosto evidente.

Se avete domande sui messaggi presenti nel syserr_log, potete pubblicarle sul forum OpenVOS oppure contattare il vostro Centro di assistenza clienti locale.