Home Homebrew Rilasciato zftpd v1.1.0: il server FTP zero-copy in C per console PlayStation...

Rilasciato zftpd v1.1.0: il server FTP zero-copy in C per console PlayStation 4 e PlayStation 5

150
0

pubblicato un primo aggiornamento per zftpd, il server FTP open source sviluppato da Seregon, che in questa release concentra l’attenzione principalmente sulla stabilità in ambiente console.

L’intervento nasce dall’individuazione di una condizione di stack overflow nel percorso di esecuzione dei thread, un problema che in determinate circostanze poteva causare crash durante sessioni particolarmente pesanti o in presenza di call stack profondi.

L’errore, identificato attraverso un fault address vicino al registro RSP con impatto sulla guard page dello stack, è stato risolto aumentando la dimensione predefinita dello stack dei thread a 512 KB sulle piattaforme console.

Sui sistemi non console la dimensione resta invece fissata a 64 KB, ritenuta adeguata per ambienti desktop tradizionali.

Oltre all’incremento della memoria allocata, la configurazione dello stack ora viene  impostata in modo esplicito tramite pthread_attr_setstacksize(), garantendo un controllo più preciso e prevedibile del comportamento dei thread.

La modifica è stata applicata sia al thread che gestisce le connessioni in ingresso sia al thread dedicato alle singole sessioni FTP.

Questo intervento migliora in modo significativo la stabilità sotto carichi elevati e in scenari complessi, in particolare negli ambienti Orbis e Prospero, i sistemi operativi rispettivamente alla base di PlayStation 4 e PlayStation 5.

Per quanto riguarda le piattaforme supportate e testate, zftpd risulta funzionare in modo nativo su OrbisOS, quindi su PlayStation 4, con esecuzione completa e accesso root in contesti di sandbox escape, è pienamente operativo anche su macOS e su Linux, con test effettuati in particolare su Debian.

Sul fronte ProsperoOS, il sistema della PlayStation 5, lo sviluppatore è ancora alla ricerca di tester in grado di eseguire il payload e fornire log utili a perfezionare ulteriormente la compatibilità.

La roadmap del progetto include l’estensione dei test a un numero più ampio di distribuzioni Linux, il supporto nativo a Windows e la valutazione di ulteriori binding e superfici di esecuzione, tra cui BD-J e Lua.

L’obiettivo è rendere zftpd non solo un server FTP ad alte prestazioni per console, ma una soluzione sempre più solida e portabile, capace di adattarsi a contesti differenti mantenendo l’approccio rigoroso e orientato alla stabilità che ne caratterizza lo sviluppo.

Caratteristiche principali

  • I/O zero-copy tramite sendfile() per massime prestazioni (~950 MB/s su PS4).
  • Utilizzo delle risorse limitato (nessuna allocazione dinamica nei percorsi critici).
  • Astrazione della piattaforma senza overhead a runtime.
  • Validazione dei percorsi critici per la sicurezza (previene directory traversal).
  • Standard di codifica safety-critical (conforme a MISRA C:2012).
  • Gestione completa degli errori (nessun codice “non può succedere”).

Metriche delle prestazioni

PiattaformaCapacità di elaborazioneUtilizzo della CPUCollo di bottiglia
PS4 (HDD)85 MB/s3%Disk I/O
PS5 (SSD)118 MB/s2%Network (1 Gbps)
Linux (SSD)121 MB/s1%Network

Misurazioni: Trasferimento di un file da 100 MB, sendfile() abilitato.

Documentazione

Changelog

Questa release si concentra su miglioramenti della stabilità per gli ambienti console, risolvendo una condizione di stack overflow identificata nel percorso di esecuzione dei thread.

Correzioni e miglioramenti

  • Risolto uno stack overflow dei thread su PS4/PS5.
  • Identificata una condizione di stack overflow (indirizzo di fault vicino a RSP, guard page colpita).
  • Aumentata la dimensione predefinita dello stack dei thread a 512KB sulle piattaforme console.
  • La dimensione dello stack rimane 64KB sulle piattaforme non console.
  • Configurazione esplicita dello stack pthread.
  • La dimensione dello stack dei thread ora è impostata esplicitamente tramite pthread_attr_setstacksize()
  • Modifica applicata al thread di accettazione (Accept thread).
  • Modifica applicata al thread di sessione (Session thread).
  • Migliorata significativamente la stabilità sotto carichi elevati di sessioni e call stack profondi su ambienti Orbis/Prospero.

Piattaforme supportate e testate

  • OrbisOS (PlayStation 4): Esecuzione nativa con Sandbox Escape completo (accesso root).
  • macOS: Completamente funzionante.
  • Linux (Debian): Completamente funzionante.

Roadmap / Prossimi sviluppi

  • ProsperoOS (PlayStation 5): Ancora alla ricerca di tester. Se puoi eseguire il payload e fornire log, sarebbe di grande aiuto.
  • Supporto Linux esteso: Test di compatibilità su un numero più ampio di distribuzioni.
  • Supporto Windows: Compatibilità nativa pianificata.
  • Binding futuri: BD-J, Lua e ulteriori superfici di esecuzione in fase di valutazione.

Download: zftpd v1.1.0 (Linux)

Download: zftpd v1.1.0 (MacOS)

Download: zftpd v1.1.0 (PS4)

Download: zftpd v1.1.0 (PS5)

Download: Source code zftpd v1.1.0

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS4

Vedi altri prodotti PS4

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-03-12 / Link di affiliazione / Immagini da Amazon Product Advertising API