Skip to content

Commit 48a8391

Browse files
Merge #370
370: Fix WASI by using u32 everywhere instead of u16 r=syrusakbary a=syrusakbary Long story short: we were seeing some undeterministic behavior when running wasmer with WASI on Linux. It turned out we are doing some bad conversions from u16 to the inner type in the trampolines (or func type?), and this only showed up in certain systems. This PR is a quick fix to get things running quickly, but we will proceed with a proper fix soon and revert this PR. Note: the discovery of the bug was done by @bjfish, and this PR is just a very simple way to address it. cc @lachlansneff Co-authored-by: Syrus <me@syrusakbary.com>
2 parents 363b46e + 0aa35a6 commit 48a8391

File tree

1 file changed

+104
-104
lines changed

1 file changed

+104
-104
lines changed

lib/wasi/src/syscalls/types.rs

+104-104
Original file line numberDiff line numberDiff line change
@@ -42,84 +42,84 @@ pub struct __wasi_dirent_t {
4242
pub d_type: __wasi_filetype_t,
4343
}
4444

45-
pub type __wasi_errno_t = u16;
46-
pub const __WASI_ESUCCESS: u16 = 0;
47-
pub const __WASI_E2BIG: u16 = 1;
48-
pub const __WASI_EACCES: u16 = 2;
49-
pub const __WASI_EADDRINUSE: u16 = 3;
50-
pub const __WASI_EADDRNOTAVAIL: u16 = 4;
51-
pub const __WASI_EAFNOSUPPORT: u16 = 5;
52-
pub const __WASI_EAGAIN: u16 = 6;
53-
pub const __WASI_EALREADY: u16 = 7;
54-
pub const __WASI_EBADF: u16 = 8;
55-
pub const __WASI_EBADMSG: u16 = 9;
56-
pub const __WASI_EBUSY: u16 = 10;
57-
pub const __WASI_ECANCELED: u16 = 11;
58-
pub const __WASI_ECHILD: u16 = 12;
59-
pub const __WASI_ECONNABORTED: u16 = 13;
60-
pub const __WASI_ECONNREFUSED: u16 = 14;
61-
pub const __WASI_ECONNRESET: u16 = 15;
62-
pub const __WASI_EDEADLK: u16 = 16;
63-
pub const __WASI_EDESTADDRREQ: u16 = 17;
64-
pub const __WASI_EDOM: u16 = 18;
65-
pub const __WASI_EDQUOT: u16 = 19;
66-
pub const __WASI_EEXIST: u16 = 20;
67-
pub const __WASI_EFAULT: u16 = 21;
68-
pub const __WASI_EFBIG: u16 = 22;
69-
pub const __WASI_EHOSTUNREACH: u16 = 23;
70-
pub const __WASI_EIDRM: u16 = 24;
71-
pub const __WASI_EILSEQ: u16 = 25;
72-
pub const __WASI_EINPROGRESS: u16 = 26;
73-
pub const __WASI_EINTR: u16 = 27;
74-
pub const __WASI_EINVAL: u16 = 28;
75-
pub const __WASI_EIO: u16 = 29;
76-
pub const __WASI_EISCONN: u16 = 30;
77-
pub const __WASI_EISDIR: u16 = 31;
78-
pub const __WASI_ELOOP: u16 = 32;
79-
pub const __WASI_EMFILE: u16 = 33;
80-
pub const __WASI_EMLINK: u16 = 34;
81-
pub const __WASI_EMSGSIZE: u16 = 35;
82-
pub const __WASI_EMULTIHOP: u16 = 36;
83-
pub const __WASI_ENAMETOOLONG: u16 = 37;
84-
pub const __WASI_ENETDOWN: u16 = 38;
85-
pub const __WASI_ENETRESET: u16 = 39;
86-
pub const __WASI_ENETUNREACH: u16 = 40;
87-
pub const __WASI_ENFILE: u16 = 41;
88-
pub const __WASI_ENOBUFS: u16 = 42;
89-
pub const __WASI_ENODEV: u16 = 43;
90-
pub const __WASI_ENOENT: u16 = 44;
91-
pub const __WASI_ENOEXEC: u16 = 45;
92-
pub const __WASI_ENOLCK: u16 = 46;
93-
pub const __WASI_ENOLINK: u16 = 47;
94-
pub const __WASI_ENOMEM: u16 = 48;
95-
pub const __WASI_ENOMSG: u16 = 49;
96-
pub const __WASI_ENOPROTOOPT: u16 = 50;
97-
pub const __WASI_ENOSPC: u16 = 51;
98-
pub const __WASI_ENOSYS: u16 = 52;
99-
pub const __WASI_ENOTCONN: u16 = 53;
100-
pub const __WASI_ENOTDIR: u16 = 54;
101-
pub const __WASI_ENOTEMPTY: u16 = 55;
102-
pub const __WASI_ENOTRECOVERABLE: u16 = 56;
103-
pub const __WASI_ENOTSOCK: u16 = 57;
104-
pub const __WASI_ENOTSUP: u16 = 58;
105-
pub const __WASI_ENOTTY: u16 = 59;
106-
pub const __WASI_ENXIO: u16 = 60;
107-
pub const __WASI_EOVERFLOW: u16 = 61;
108-
pub const __WASI_EOWNERDEAD: u16 = 62;
109-
pub const __WASI_EPERM: u16 = 63;
110-
pub const __WASI_EPIPE: u16 = 64;
111-
pub const __WASI_EPROTO: u16 = 65;
112-
pub const __WASI_EPROTONOSUPPORT: u16 = 66;
113-
pub const __WASI_EPROTOTYPE: u16 = 67;
114-
pub const __WASI_ERANGE: u16 = 68;
115-
pub const __WASI_EROFS: u16 = 69;
116-
pub const __WASI_ESPIPE: u16 = 70;
117-
pub const __WASI_ESRCH: u16 = 71;
118-
pub const __WASI_ESTALE: u16 = 72;
119-
pub const __WASI_ETIMEDOUT: u16 = 73;
120-
pub const __WASI_ETXTBSY: u16 = 74;
121-
pub const __WASI_EXDEV: u16 = 75;
122-
pub const __WASI_ENOTCAPABLE: u16 = 76;
45+
pub type __wasi_errno_t = u32;
46+
pub const __WASI_ESUCCESS: u32 = 0;
47+
pub const __WASI_E2BIG: u32 = 1;
48+
pub const __WASI_EACCES: u32 = 2;
49+
pub const __WASI_EADDRINUSE: u32 = 3;
50+
pub const __WASI_EADDRNOTAVAIL: u32 = 4;
51+
pub const __WASI_EAFNOSUPPORT: u32 = 5;
52+
pub const __WASI_EAGAIN: u32 = 6;
53+
pub const __WASI_EALREADY: u32 = 7;
54+
pub const __WASI_EBADF: u32 = 8;
55+
pub const __WASI_EBADMSG: u32 = 9;
56+
pub const __WASI_EBUSY: u32 = 10;
57+
pub const __WASI_ECANCELED: u32 = 11;
58+
pub const __WASI_ECHILD: u32 = 12;
59+
pub const __WASI_ECONNABORTED: u32 = 13;
60+
pub const __WASI_ECONNREFUSED: u32 = 14;
61+
pub const __WASI_ECONNRESET: u32 = 15;
62+
pub const __WASI_EDEADLK: u32 = 16;
63+
pub const __WASI_EDESTADDRREQ: u32 = 17;
64+
pub const __WASI_EDOM: u32 = 18;
65+
pub const __WASI_EDQUOT: u32 = 19;
66+
pub const __WASI_EEXIST: u32 = 20;
67+
pub const __WASI_EFAULT: u32 = 21;
68+
pub const __WASI_EFBIG: u32 = 22;
69+
pub const __WASI_EHOSTUNREACH: u32 = 23;
70+
pub const __WASI_EIDRM: u32 = 24;
71+
pub const __WASI_EILSEQ: u32 = 25;
72+
pub const __WASI_EINPROGRESS: u32 = 26;
73+
pub const __WASI_EINTR: u32 = 27;
74+
pub const __WASI_EINVAL: u32 = 28;
75+
pub const __WASI_EIO: u32 = 29;
76+
pub const __WASI_EISCONN: u32 = 30;
77+
pub const __WASI_EISDIR: u32 = 31;
78+
pub const __WASI_ELOOP: u32 = 32;
79+
pub const __WASI_EMFILE: u32 = 33;
80+
pub const __WASI_EMLINK: u32 = 34;
81+
pub const __WASI_EMSGSIZE: u32 = 35;
82+
pub const __WASI_EMULTIHOP: u32 = 36;
83+
pub const __WASI_ENAMETOOLONG: u32 = 37;
84+
pub const __WASI_ENETDOWN: u32 = 38;
85+
pub const __WASI_ENETRESET: u32 = 39;
86+
pub const __WASI_ENETUNREACH: u32 = 40;
87+
pub const __WASI_ENFILE: u32 = 41;
88+
pub const __WASI_ENOBUFS: u32 = 42;
89+
pub const __WASI_ENODEV: u32 = 43;
90+
pub const __WASI_ENOENT: u32 = 44;
91+
pub const __WASI_ENOEXEC: u32 = 45;
92+
pub const __WASI_ENOLCK: u32 = 46;
93+
pub const __WASI_ENOLINK: u32 = 47;
94+
pub const __WASI_ENOMEM: u32 = 48;
95+
pub const __WASI_ENOMSG: u32 = 49;
96+
pub const __WASI_ENOPROTOOPT: u32 = 50;
97+
pub const __WASI_ENOSPC: u32 = 51;
98+
pub const __WASI_ENOSYS: u32 = 52;
99+
pub const __WASI_ENOTCONN: u32 = 53;
100+
pub const __WASI_ENOTDIR: u32 = 54;
101+
pub const __WASI_ENOTEMPTY: u32 = 55;
102+
pub const __WASI_ENOTRECOVERABLE: u32 = 56;
103+
pub const __WASI_ENOTSOCK: u32 = 57;
104+
pub const __WASI_ENOTSUP: u32 = 58;
105+
pub const __WASI_ENOTTY: u32 = 59;
106+
pub const __WASI_ENXIO: u32 = 60;
107+
pub const __WASI_EOVERFLOW: u32 = 61;
108+
pub const __WASI_EOWNERDEAD: u32 = 62;
109+
pub const __WASI_EPERM: u32 = 63;
110+
pub const __WASI_EPIPE: u32 = 64;
111+
pub const __WASI_EPROTO: u32 = 65;
112+
pub const __WASI_EPROTONOSUPPORT: u32 = 66;
113+
pub const __WASI_EPROTOTYPE: u32 = 67;
114+
pub const __WASI_ERANGE: u32 = 68;
115+
pub const __WASI_EROFS: u32 = 69;
116+
pub const __WASI_ESPIPE: u32 = 70;
117+
pub const __WASI_ESRCH: u32 = 71;
118+
pub const __WASI_ESTALE: u32 = 72;
119+
pub const __WASI_ETIMEDOUT: u32 = 73;
120+
pub const __WASI_ETXTBSY: u32 = 74;
121+
pub const __WASI_EXDEV: u32 = 75;
122+
pub const __WASI_ENOTCAPABLE: u32 = 76;
123123

124124
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
125125
#[repr(C)]
@@ -173,8 +173,8 @@ impl __wasi_event_t {
173173
}
174174
}
175175

176-
pub type __wasi_eventrwflags_t = u16;
177-
pub const __WASI_EVENT_FD_READWRITE_HANGUP: u16 = 1 << 0;
176+
pub type __wasi_eventrwflags_t = u32;
177+
pub const __WASI_EVENT_FD_READWRITE_HANGUP: u32 = 1 << 0;
178178

179179
pub type __wasi_eventtype_t = u8;
180180
pub const __WASI_EVENTTYPE_CLOCK: u8 = 0;
@@ -188,12 +188,12 @@ pub const __WASI_STDIN_FILENO: u32 = 0;
188188
pub const __WASI_STDOUT_FILENO: u32 = 1;
189189
pub const __WASI_STDERR_FILENO: u32 = 2;
190190

191-
pub type __wasi_fdflags_t = u16;
192-
pub const __WASI_FDFLAG_APPEND: u16 = 1 << 0;
193-
pub const __WASI_FDFLAG_DSYNC: u16 = 1 << 1;
194-
pub const __WASI_FDFLAG_NONBLOCK: u16 = 1 << 2;
195-
pub const __WASI_FDFLAG_RSYNC: u16 = 1 << 3;
196-
pub const __WASI_FDFLAG_SYNC: u16 = 1 << 4;
191+
pub type __wasi_fdflags_t = u32;
192+
pub const __WASI_FDFLAG_APPEND: u32 = 1 << 0;
193+
pub const __WASI_FDFLAG_DSYNC: u32 = 1 << 1;
194+
pub const __WASI_FDFLAG_NONBLOCK: u32 = 1 << 2;
195+
pub const __WASI_FDFLAG_RSYNC: u32 = 1 << 3;
196+
pub const __WASI_FDFLAG_SYNC: u32 = 1 << 4;
197197

198198
pub type __wasi_preopentype_t = u8;
199199
pub const __WASI_PREOPENTYPE_DIR: u8 = 0;
@@ -289,11 +289,11 @@ pub const __WASI_FILETYPE_SOCKET_DGRAM: u8 = 5;
289289
pub const __WASI_FILETYPE_SOCKET_STREAM: u8 = 6;
290290
pub const __WASI_FILETYPE_SYMBOLIC_LINK: u8 = 7;
291291

292-
pub type __wasi_fstflags_t = u16;
293-
pub const __WASI_FILESTAT_SET_ATIM: u16 = 1 << 0;
294-
pub const __WASI_FILESTAT_SET_ATIM_NOW: u16 = 1 << 1;
295-
pub const __WASI_FILESTAT_SET_MTIM: u16 = 1 << 2;
296-
pub const __WASI_FILESTAT_SET_MTIM_NOW: u16 = 1 << 3;
292+
pub type __wasi_fstflags_t = u32;
293+
pub const __WASI_FILESTAT_SET_ATIM: u32 = 1 << 0;
294+
pub const __WASI_FILESTAT_SET_ATIM_NOW: u32 = 1 << 1;
295+
pub const __WASI_FILESTAT_SET_MTIM: u32 = 1 << 2;
296+
pub const __WASI_FILESTAT_SET_MTIM_NOW: u32 = 1 << 3;
297297

298298
pub type __wasi_inode_t = u64;
299299

@@ -311,15 +311,15 @@ pub type __wasi_linkcount_t = u32;
311311
pub type __wasi_lookupflags_t = u32;
312312
pub const __WASI_LOOKUP_SYMLINK_FOLLOW: u32 = 1 << 0;
313313

314-
pub type __wasi_oflags_t = u16;
315-
pub const __WASI_O_CREAT: u16 = 1 << 0;
316-
pub const __WASI_O_DIRECTORY: u16 = 1 << 1;
317-
pub const __WASI_O_EXCL: u16 = 1 << 2;
318-
pub const __WASI_O_TRUNC: u16 = 1 << 3;
314+
pub type __wasi_oflags_t = u32;
315+
pub const __WASI_O_CREAT: u32 = 1 << 0;
316+
pub const __WASI_O_DIRECTORY: u32 = 1 << 1;
317+
pub const __WASI_O_EXCL: u32 = 1 << 2;
318+
pub const __WASI_O_TRUNC: u32 = 1 << 3;
319319

320-
pub type __wasi_riflags_t = u16;
321-
pub const __WASI_SOCK_RECV_PEEK: u16 = 1 << 0;
322-
pub const __WASI_SOCK_RECV_WAITALL: u16 = 1 << 1;
320+
pub type __wasi_riflags_t = u32;
321+
pub const __WASI_SOCK_RECV_PEEK: u32 = 1 << 0;
322+
pub const __WASI_SOCK_RECV_WAITALL: u32 = 1 << 1;
323323

324324
pub type __wasi_rights_t = u64;
325325
pub const __WASI_RIGHT_FD_DATASYNC: u64 = 1 << 0;
@@ -352,14 +352,14 @@ pub const __WASI_RIGHT_PATH_REMOVE_DIRECTORY: u64 = 1 << 26;
352352
pub const __WASI_RIGHT_POLL_FD_READWRITE: u64 = 1 << 27;
353353
pub const __WASI_RIGHT_SOCK_SHUTDOWN: u64 = 1 << 28;
354354

355-
pub type __wasi_roflags_t = u16;
356-
pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u16 = 1 << 0;
355+
pub type __wasi_roflags_t = u32;
356+
pub const __WASI_SOCK_RECV_DATA_TRUNCATED: u32 = 1 << 0;
357357

358358
pub type __wasi_sdflags_t = u8;
359359
pub const __WASI_SHUT_RD: u8 = 1 << 0;
360360
pub const __WASI_SHUT_WR: u8 = 1 << 1;
361361

362-
pub type __wasi_siflags_t = u16;
362+
pub type __wasi_siflags_t = u32;
363363

364364
pub type __wasi_signal_t = u8;
365365
pub const __WASI_SIGABRT: u8 = 0;
@@ -389,8 +389,8 @@ pub const __WASI_SIGVTALRM: u8 = 23;
389389
pub const __WASI_SIGXCPU: u8 = 24;
390390
pub const __WASI_SIGXFSZ: u8 = 25;
391391

392-
pub type __wasi_subclockflags_t = u16;
393-
pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u16 = 1 << 0;
392+
pub type __wasi_subclockflags_t = u32;
393+
pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u32 = 1 << 0;
394394

395395
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
396396
#[repr(C)]

0 commit comments

Comments
 (0)