From 1037968a929116a54d1b42828545bd3a4d228efb Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Thu, 23 Apr 2009 15:57:17 +0000 Subject: [PATCH] Materiale su mcheck --- process.tex | 72 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 8 deletions(-) diff --git a/process.tex b/process.tex index 4d5118c..98c9b8d 100644 --- a/process.tex +++ b/process.tex @@ -1158,6 +1158,62 @@ sia stampato il messaggio d'errore che abortito il programma. In genere opportuno definire la variabile ad un valore diverso da zero che consente di rilevare un errore nel momento in cui avviene. +Una modalità alternativa per effettuare dei controlli di consistenza sullo +stato delle allocazioni di memoria eseguite con \func{malloc}, anche questa +fornita come estensione specifica (e non standard) delle \acr{glibc}, è quella +di utilizzare la funzione \funcd{mcheck}, che deve essere chiamata prima di +eseguire qualunque allocazione con \func{malloc}; il suo prototipo è: +\begin{prototype}{mcheck.h}{mcheck(void (*abortfn) (enum mcheck\_status + status))} + Attiva i controlli di consistenza delle allocazioni eseguite da \func{malloc}. + + \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di + fallimento; \var{errno} non viene impostata.} +\end{prototype} + +La funzione consente di registrare una funzione di emergenza, da passare come +argomento, che verrà eseguita tutte le volte che, in una successiva esecuzione +di \func{malloc}, venissero trovate delle inconsistenze, come delle operazioni +di scrittura oltre i limiti dei buffer allocati. Per questo motivo la funzione +deve essere chiamata prima di qualunque allocazione di memoria, altrimenti +fallirà con un valore di ritorni di $-1$. + +Se come argomento si passa \var{NULL} verrà utilizzata una funzione +predefinita che stampa un messaggio di errore ed invoca la funzione +\func{abort} (vedi sez.~\ref{sec:sig_alarm_abort}), altrimenti si dovrà +utilizzare una funzione ad hoc che riceverà come argomento un codice di tipo +\type{mcheck\_status}, un tipo enumerato che può assumere soltanto i valori di +tab. + + + +\begin{table}[htb] + \centering + \footnotesize + \begin{tabular}[c]{|l|c|c|c|p{7cm}|} + \hline + \textbf{Valore} & \textbf{Significato} \\ + \hline + \hline + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \macro{}& \\ + \hline + \end{tabular} + \caption{Valori dello stato.} + \label{tab:mcheck_status_value} +\end{table} + % TODO: trattare le altre funzionalità avanzate di \func{malloc}, mallopt, % mtrace, muntrace, mcheck, mallinfo e gli hook % con le glibc 2.10 c'è pure malloc_info a sostituire mallinfo, vedi @@ -1531,16 +1587,16 @@ alla cancellazione di tutto l'ambiente per costruirne una versione ``\textsl{sicura}'' da zero. -\subsection{Opzioni in formato esteso} -\label{sec:proc_opt_extended} +%\subsection{Opzioni in formato esteso} +%\label{sec:proc_opt_extended} -Oltre alla modalità ordinaria di gestione delle opzioni trattata in -sez.~\ref{sec:proc_opt_handling} le \acr{glibc} forniscono una modalità -alternativa costituita dalle cosiddette \textit{long-options}, che consente di -esprimere le opzioni in una forma più descrittiva che nel caso più generale è -qualcosa del tipo di ``\texttt{-{}-option-name=parameter}''. +%Oltre alla modalità ordinaria di gestione delle opzioni trattata in +%sez.~\ref{sec:proc_opt_handling} le \acr{glibc} forniscono una modalità +%alternativa costituita dalle cosiddette \textit{long-options}, che consente di +%esprimere le opzioni in una forma più descrittiva che nel caso più generale è +%qualcosa del tipo di ``\texttt{-{}-option-name=parameter}''. -(NdA: questa parte verrà inserita in seguito). +%(NdA: questa parte verrà inserita in seguito). % TODO opzioni in formato esteso -- 2.30.2