Commit a53e011
committed
propagate guest exit codes and implement host-mediated time.sleep
Three behavioral fixes for python-agent-driver on Hyperlight:
1. Exception exit codes: PyRun_SimpleString swallowed exceptions.
Replace with PyRun_String + manual exception handling in
run_code_with_exceptions(). Non-zero exit codes reported to
host via __hl_exit /dev/hcall side channel.
2. sys.exit(N) propagation: SystemExit was caught by CPython's
internal handler which called exit() — Hyperlight's VmExit::Halt
doesn't carry exit codes. Now intercepted before CPython handles
it, code extracted and reported via __hl_exit.
3. time.sleep() was a no-op: Unikraft's cooperative scheduler on
Hyperlight has no timer interrupt, so nanosleep returns
immediately. Monkey-patch time.sleep during init to route
through __hl_sleep host call, which blocks the host thread.
Host side: Sandbox gains exit_code field (Arc<AtomicI32>), always
registers __dispatch with __hl_exit and __hl_sleep handlers via
register_internal_tools(). RunTiming exposes exit_code. pyhl binary
exits with the guest's reported code.
Signed-off-by: danbugs <danilochiarlone@gmail.com>1 parent 9d37a86 commit a53e011
4 files changed
Lines changed: 167 additions & 53 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
137 | 138 | | |
138 | 139 | | |
139 | 140 | | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
140 | 202 | | |
141 | 203 | | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | 204 | | |
149 | 205 | | |
150 | 206 | | |
| |||
153 | 209 | | |
154 | 210 | | |
155 | 211 | | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
164 | 218 | | |
165 | | - | |
| 219 | + | |
166 | 220 | | |
167 | 221 | | |
168 | 222 | | |
169 | 223 | | |
170 | | - | |
171 | | - | |
172 | 224 | | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
173 | 233 | | |
174 | 234 | | |
175 | 235 | | |
| |||
202 | 262 | | |
203 | 263 | | |
204 | 264 | | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
205 | 283 | | |
206 | 284 | | |
207 | 285 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
504 | 504 | | |
505 | 505 | | |
506 | 506 | | |
| 507 | + | |
507 | 508 | | |
508 | 509 | | |
509 | 510 | | |
| 511 | + | |
510 | 512 | | |
511 | 513 | | |
512 | | - | |
| 514 | + | |
513 | 515 | | |
514 | 516 | | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
515 | 520 | | |
516 | 521 | | |
517 | 522 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
70 | 71 | | |
71 | 72 | | |
72 | 73 | | |
| |||
791 | 792 | | |
792 | 793 | | |
793 | 794 | | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
794 | 814 | | |
795 | 815 | | |
796 | 816 | | |
| |||
1041 | 1061 | | |
1042 | 1062 | | |
1043 | 1063 | | |
| 1064 | + | |
1044 | 1065 | | |
1045 | 1066 | | |
1046 | 1067 | | |
| |||
1213 | 1234 | | |
1214 | 1235 | | |
1215 | 1236 | | |
1216 | | - | |
1217 | | - | |
1218 | | - | |
1219 | | - | |
1220 | | - | |
1221 | | - | |
1222 | | - | |
1223 | | - | |
1224 | | - | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
1225 | 1245 | | |
1226 | | - | |
| 1246 | + | |
1227 | 1247 | | |
1228 | 1248 | | |
1229 | 1249 | | |
| |||
1263 | 1283 | | |
1264 | 1284 | | |
1265 | 1285 | | |
1266 | | - | |
1267 | | - | |
1268 | | - | |
1269 | | - | |
1270 | | - | |
1271 | | - | |
1272 | | - | |
1273 | | - | |
1274 | | - | |
1275 | | - | |
| 1286 | + | |
| 1287 | + | |
| 1288 | + | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
1276 | 1294 | | |
1277 | | - | |
| 1295 | + | |
1278 | 1296 | | |
1279 | 1297 | | |
1280 | 1298 | | |
1281 | 1299 | | |
1282 | 1300 | | |
1283 | 1301 | | |
| 1302 | + | |
1284 | 1303 | | |
1285 | 1304 | | |
1286 | 1305 | | |
| |||
1289 | 1308 | | |
1290 | 1309 | | |
1291 | 1310 | | |
| 1311 | + | |
1292 | 1312 | | |
1293 | 1313 | | |
1294 | 1314 | | |
| |||
1339 | 1359 | | |
1340 | 1360 | | |
1341 | 1361 | | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
1342 | 1374 | | |
1343 | 1375 | | |
1344 | 1376 | | |
| |||
1405 | 1437 | | |
1406 | 1438 | | |
1407 | 1439 | | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
1408 | 1446 | | |
1409 | | - | |
1410 | | - | |
1411 | | - | |
1412 | | - | |
1413 | | - | |
1414 | | - | |
1415 | | - | |
1416 | | - | |
1417 | | - | |
1418 | | - | |
1419 | | - | |
1420 | | - | |
1421 | | - | |
1422 | | - | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
1423 | 1450 | | |
1424 | 1451 | | |
1425 | 1452 | | |
| |||
1428 | 1455 | | |
1429 | 1456 | | |
1430 | 1457 | | |
| 1458 | + | |
1431 | 1459 | | |
1432 | 1460 | | |
1433 | 1461 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
197 | 197 | | |
198 | 198 | | |
199 | 199 | | |
| 200 | + | |
200 | 201 | | |
201 | 202 | | |
202 | 203 | | |
| |||
244 | 245 | | |
245 | 246 | | |
246 | 247 | | |
| 248 | + | |
247 | 249 | | |
248 | 250 | | |
249 | 251 | | |
250 | 252 | | |
| 253 | + | |
251 | 254 | | |
252 | 255 | | |
253 | 256 | | |
| |||
0 commit comments