SEGFAULT: Debugging di un'applicazione che va in crash

🙀 Qualcosa si rompe Se usate Linux ed eseguite alcune applicazioni, potreste aver visto a volte un messaggio di errore simile a questo: [1] 24975 segmentation fault (core dumped) cosa significa e come può essere utile? Scopriamolo insieme. 🧪 Preparazione del laboratorio Per realizzare un caso di studio adeguato, abbiamo bisogno di un programma che vada in crash. Naturalmente al giorno d’oggi sono molto rari 😁 quindi ne creeremo uno noi stessi, mettendo in mostra le nostre peggiori abilità e pratiche di programmazione in C. ...

5 aprile 2024 · Andrea Manzini

Esperimenti con Rust su architettura ARM

Un vecchio ritrovamento Ho ritrovato un vecchio cubieboard3 (cubietruck) che accumulava polvere in un cassetto, quindi ho colto l’occasione per provare la cross-compilazione con Rust e raccogliere qui alcune note sul processo. Eccolo qui: Diamogli un pinguino Prima di tutto, ho installato una distribuzione Linux ARM su una scheda MicroSD e ho avviato il dispositivo: [user@arm ~]$ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 50.52 Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 4 processor : 1 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 50.52 Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 4 Hardware : Allwinner sun7i (A20) Family Revision : 0000 Quindi il nostro dispositivo ha una CPU ARM modello v7l; questo significa che si tratta di una CPU a 32 bit, e se siete curiosi esiste anche un manuale di riferimento in circolazione. Ora lavoreremo da una macchina di sviluppo. ...

1 marzo 2024 · Andrea Manzini

Fault Injection in Network Namespace e ambienti Veth

Introduzione Questo articolo fa seguito al mio post precedente ed è una sorta di continuazione della serie sull’argomento, in cui esploriamo modi per rendere il nostro sistema di test più "inaffidabile" al fine di osservare se le nostre applicazioni si comportano correttamente in ambienti difficili e non ideali. In questo articolo esploreremo alcune tecnologie Linux: Network Namespace (netns) Dispositivi Ethernet Virtuali (veth) Politica di scheduling per l’emulazione di rete (netem) L’obiettivo è configurare un collegamento di rete virtuale all’interno del nostro sistema, far comunicare i due dispositivi di rete tra loro e quindi simulare una comunicazione scadente/lenta/instabile/difettosa per testare come si comportano le applicazioni in condizioni difficili. ...

6 gennaio 2024 · Andrea Manzini

Aspettati l'inaspettato

"Sembri un disco rotto" È un modo di dire comune quando qualcuno ripete continuamente gli stessi concetti. Ma a volte anche un disco rotto (o danneggiato) può rivelarsi utile. ATTENZIONE: Nessun filesystem o dispositivo è stato danneggiato durante la realizzazione di questo esperimento 😉 Crediti immagine: Mick Haupt In questo articolo vorrei esplorare i potenti strumenti di cui disponiamo in Linux per simulare la gestione di dischi danneggiati, ovvero unità che segnalano errori in modo più o meno casuale. Perché è importante? Perché simulando errori che prima o poi si verificheranno anche nel mondo reale, siamo in grado di creare software più robusto, capace di resistere a eventuali problemi dell’infrastruttura. ...

19 novembre 2023 · Andrea Manzini

This site does not use cookies or collect any personal data. © 2026 Andrea Manzini.