@@ -61,17 +61,30 @@ impl UffdHandler {
61
61
let mut message_buf = vec ! [ 0u8 ; 1024 ] ;
62
62
let ( bytes_read, file) = stream
63
63
. recv_with_fd ( & mut message_buf[ ..] )
64
- . expect ( "Cannot recv_with_fd " ) ;
64
+ . expect ( "Cannot read from a stream " ) ;
65
65
message_buf. resize ( bytes_read, 0 ) ;
66
66
67
- let body = String :: from_utf8 ( message_buf) . unwrap ( ) ;
68
- let file = file. expect ( "Uffd not passed through UDS!" ) ;
67
+ let body = String :: from_utf8 ( message_buf. clone ( ) ) . unwrap_or_else ( |_| {
68
+ panic ! (
69
+ "Received body is not a utf-8 valid string. Raw bytes received: {message_buf:#?}"
70
+ )
71
+ } ) ;
72
+ let file =
73
+ file. unwrap_or_else ( || panic ! ( "Did not receive Uffd from UDS. Received body: {body}" ) ) ;
69
74
70
- let mappings = serde_json:: from_str :: < Vec < GuestRegionUffdMapping > > ( & body)
71
- . expect ( "Cannot deserialize memory mappings." ) ;
75
+ let mappings =
76
+ serde_json:: from_str :: < Vec < GuestRegionUffdMapping > > ( & body) . unwrap_or_else ( |_| {
77
+ panic ! ( "Cannot deserialize memory mappings. Received body: {body}" )
78
+ } ) ;
72
79
let memsize: usize = mappings. iter ( ) . map ( |r| r. size ) . sum ( ) ;
73
80
// Page size is the same for all memory regions, so just grab the first one
74
- let page_size = mappings. first ( ) . unwrap ( ) . page_size_kib ;
81
+ let first_mapping = mappings. first ( ) . unwrap_or_else ( || {
82
+ panic ! (
83
+ "Cannot get the first mapping. Mappings size is {}. Received body: {body}" ,
84
+ mappings. len( )
85
+ )
86
+ } ) ;
87
+ let page_size = first_mapping. page_size_kib ;
75
88
76
89
// Make sure memory size matches backing data size.
77
90
assert_eq ! ( memsize, size) ;
0 commit comments