Passa al contenuto principale

Di recente ho diagnosticato un apparente problema di compilatore per un cliente OpenVOS. Ha due moduli che eseguono OpenVOS Release 17.1. È stato in grado di compilare con successo un programma su uno di essi, ma il compilatore gcc ha diagnosticato un "errore interno del compilatore" quando ha provato a compilarlo sull'altro modulo. Ho cercato di duplicare il problema qui, ma non sono riuscito a riprodurlo. Così mi è venuto in mente che il problema deve essere specifico del modulo che presenta il guasto, piuttosto che un problema con il compilatore. All'inizio, ho pensato che potesse essere dovuto alle modifiche ai valori limite dei comandi di default che abbiamo fatto nella release 17.1 di OpenVOS. Un certo numero di programmi, inclusi gcc e gmake, falliranno nella Release 17.1 se i valori limite dei comandi non sono impostati su valori coerenti, né impostati su valori infiniti. Ma questo cliente aveva commentato il comando di esempio set_default_cmd_limits nel modulo_start_up.cm, quindi stava già usando valori infiniti, che è quello che raccomandiamo in questa release. Successivamente, ho chiesto al cliente di guardare nel syserr_log al momento dell'errore del compilatore. Sicuramente ha trovato dei messaggi che indicavano che il suo modulo aveva esaurito lo spazio di paginazione. Anche se i limiti di spazio dell'indirizzo non limitavano il suo utilizzo, non aveva abbastanza spazio di paging, e quindi il sistema operativo non aveva altra scelta se non quella di impedirgli di richiedere memoria virtuale aggiuntiva. Ciò ha portato a un'eccezione di indirizzamento in gcc, che ha portato all'oscuro messaggio di errore. Una volta creato un nuovo file di paging su uno di questi dischi, è stato in grado di costruire il suo enorme programma sorgente.

La morale della storia è che quando si riceve uno strano errore (uno che non si è mai visto prima, o che non si capisce), non fa mai male guardare nel syserr log per vedere se OpenVOS ha registrato qualche messaggio. In questo caso, il suo syserr log conteneva una serie di messaggi che tracciavano il progresso verso l'esaurimento dello spazio di paging. Poiché l'errore era riproducibile, la connessione era abbastanza ovvia.

Se hai domande sui messaggi nel syserr_log, puoi postarli sul Forum di OpenVOS o puoi contattare il tuo Centro Assistenza Clienti locale.

 

© 2024 Stratus Technologies.