Skip to content
This repository has been archived by the owner on Dec 30, 2021. It is now read-only.

Reorganize for better crate modularity #60

Merged
merged 9 commits into from
Aug 27, 2019

Conversation

loganwendholt
Copy link
Contributor

This PR intends to remove the need for source files to be copied into various crates within the workspace via build scripts by consolidating these commonly used files into a new crate called common. Crates which need these files can then simply add a dependency on common to their Cargo.toml file.

In addition, this PR makes changes to the tool_library crate and the reverie library crate which allows tool library projects to add a dependency on the reverie library crate, rather than copying ffi.rs and consts.rs directly.

@loganwendholt loganwendholt changed the title Reorg Reorganize to allow for better modularity Aug 21, 2019
@loganwendholt loganwendholt changed the title Reorganize to allow for better modularity Reorganize for better crate modularity Aug 21, 2019
The tools_helper crate is intended to be used when developing
new reverie tool libraries. Previously, this was being made
available by adding it as a dependency, then making it public via
the reverie library crate.

However, this causes issues in certain cases when building the
binary, because the binary does not implement all the same
functions that would be present in a tool library, leading to
unresolved references.

To solve this, the tools_library is removed as a dependency and
is no longer a default member of the reverie workspace. However,
tool library projects can still include it as a dependency by adding
`tools_helper = { git = "https://github.com/iu-parfunc/reverie" }`
within `Cargo.toml`
@loganwendholt
Copy link
Contributor Author

@wangbj is it normal for these two tests to report a failure? Running make tests on master seems to produce similar output.

@wangbj
Copy link
Collaborator

wangbj commented Aug 21, 2019

the master branch requires a kernel with patch from misc/linux-seccomp-cloexec.diff applied, since there is no known way to patch kernel from azure pipeline, we'd need to run tests locally with the kernel patch. Or we'd need to change the design of how we load the seccomp filters, which seems non-trivial. Do you have a local Linux that you can tamper easily?

@loganwendholt
Copy link
Contributor Author

My main dev machine is running Ubuntu 18.04 with kernel 4.15.0-55-generic. Is the patch stable enough to apply to my primary machine without too much concern? Otherwise I can get a VM set up pretty quickly.

@wangbj
Copy link
Collaborator

wangbj commented Aug 21, 2019

If you're not using X/Wayland then it should be fine. for some reason it prevents ubuntu launch window manager, though I suspect it has nothing to do with the patch itself.

@loganwendholt
Copy link
Contributor Author

@wangbj what kernel version is the patch expecting? I tried to apply it to the kernel source from ubuntu-bionic apt repository, but it looks like it failed. Would the latest stable kernel (5.2.9) work?

@wangbj
Copy link
Collaborator

wangbj commented Aug 21, 2019

I tried on both 5.2 & 5.3 (rc) and both successed

@loganwendholt
Copy link
Contributor Author

@wangbj I applied the patch to the 5.3 kernel, and when I run the master branch of reverie on it, make tests still fails. I don't see any error messages in the make output, so I'm not quite sure what's going on. I can upload the full output if you would like, but it's a lot of text.

Does running locally pass all the tests on your machine?

@wangbj
Copy link
Collaborator

wangbj commented Aug 22, 2019

Do you have the full output, also would it always fail for make test? #56 is yet to be fixed, so it can cause test failure for multi-threaded applications (but not always). The glibc bugs can be always reproduced with my reproducer: https://github.com/wangbj/dlns-test

@loganwendholt
Copy link
Contributor Author

Yes, make test always fails. Here's the full output:

$ make test
make -C tests all
make[1]: Entering directory '/home/logan/cloudseal/reverie/tests'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/logan/cloudseal/reverie/tests'
    Finished dev [unoptimized + debuginfo] target(s) in 0.05s
    Finished dev [unoptimized + debuginfo] target(s) in 0.05s
'target/debug/libpreloader.so' -> 'lib/libpreloader.so'
'target/debug/libecho.so' -> 'lib/libecho.so'
'target/debug/libnone.so' -> 'lib/libnone.so'
'target/debug/libcounter.so' -> 'lib/libcounter.so'
'target/debug/libdet.so' -> 'lib/libdet.so'
'target/debug/reverie' -> 'bin/reverie'
cargo test  -- --nocapture
   Compiling syscalls v0.1.0 (/home/logan/cloudseal/reverie/syscalls)
   Compiling reverie v0.1.0 (/home/logan/cloudseal/reverie)
   Compiling tools_helper v0.1.0 (/home/logan/cloudseal/reverie/tools_helper)
   Compiling preloader v0.1.0 (/home/logan/cloudseal/reverie/preloader)
warning: unused import: `crate::consts`
  --> tools_helper/src/local_state.rs:26:5
   |
26 | use crate::consts;
   |     ^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unused variable: `rptr`
    --> src/traced_task.rs:1056:9
     |
1056 |     let rptr = RemotePtr::new(regs.rip as *mut c_void);
     |         ^^^^ help: consider prefixing with an underscore: `_rptr`
     |
     = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `rptr`
    --> src/traced_task.rs:1072:9
     |
1072 |     let rptr = RemotePtr::new(regs.rip as *mut c_void);
     |         ^^^^ help: consider prefixing with an underscore: `_rptr`

warning: variable does not need to be mutable
    --> src/traced_task.rs:1047:9
     |
1047 |     let mut new_task = task.forked();
     |         ----^^^^^^^^
     |         |
     |         help: remove this `mut`
     |
     = note: `#[warn(unused_mut)]` on by default

    Finished dev [unoptimized + debuginfo] target(s) in 4.48s
     Running target/debug/deps/preloader-50ad9e8010583a53

running 1 test
test consts::det_tls_sanity_check ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/reverie-715539d4611359b7

running 7 tests
test consts::det_tls_sanity_check ... ok
test hooks::syscall_patch_hooks_sanity_check ... ok
test stubs::extend_jump_sanity ... ok
test vdso::vdso_can_find_symbols_info ... ok
test vdso::can_find_vdso ... ok
info: ("__vdso_getcpu", (a20, 2a, [48, 85, ff, 74, 6, c7, 7, 0, 0, 0, 0, 48, 85, f6, 74, 6, c7, 6, 0, 0, 0, 0, 31, c0, c3, f, 1f, 80, 0, 0, 0, 0]))
info: ("__vdso_gettimeofday", (8b0, 83, [b8, 60, 0, 0, 0, f, 5, c3, f, 1f, 84, 0, 0, 0, 0, 0]))
info: ("__vdso_clock_gettime", (960, a1, [b8, e4, 0, 0, 0, f, 5, c3, f, 1f, 84, 0, 0, 0, 0, 0]))
info: ("__vdso_time", (940, 15, [b8, c9, 0, 0, 0, f, 5, c3, f, 1f, 84, 0, 0, 0, 0, 0]))
test vdso::vdso_patch_info_is_valid ... ok
searching 5558555cc234 returned 55585571e000
searching 55585591e234 returned 55585571e000
searching 55585592c234 returned 55585571e000
searching 5558559f4234 returned 55585571e000
searching 7faddc000234 returned 7fade0000000
searching 7faddc021234 returned 7fade0000000
searching 7fade4000234 returned 7fade0000000
searching 7fade4021234 returned 7fade0000000
searching 7fadebdff234 returned 7fade0000000
searching 7fadebe00234 returned 7fade0000000
searching 7fadec000234 returned 7fade0000000
searching 7fadec021234 returned 7fade0000000
searching 7fadf32c1234 returned 7fade0000000
searching 7fadf32c2234 returned 7fade0000000
searching 7fadf34c2234 returned 7fade0000000
searching 7fadf34c3234 returned 7fade0000000
searching 7fadf36c3234 returned 7fade0000000
searching 7fadf36c4234 returned 7fade0000000
searching 7fadf38c4234 returned 7fade0000000
searching 7fadf3a61234 returned 7fade0000000
searching 7fadf3c60234 returned 7fade0000000
searching 7fadf3c61234 returned 7fade0000000
searching 7fadf3c62234 returned 7fade0000000
searching 7fadf3e49234 returned 7fade0000000
searching 7fadf4049234 returned 7fade0000000
searching 7fadf404d234 returned 7fade0000000
searching 7fadf404f234 returned 7fade0000000
searching 7fadf4053234 returned 7fade0000000
searching 7fadf406a234 returned 7fade0000000
searching 7fadf4269234 returned 7fade0000000
searching 7fadf426a234 returned 7fade0000000
searching 7fadf426b234 returned 7fade0000000
searching 7fadf4285234 returned 7fade0000000
searching 7fadf4484234 returned 7fade0000000
searching 7fadf4485234 returned 7fade0000000
searching 7fadf4486234 returned 7fade0000000
searching 7fadf448a234 returned 7fade0000000
searching 7fadf4491234 returned 7fade0000000
searching 7fadf4690234 returned 7fade0000000
searching 7fadf4691234 returned 7fade0000000
searching 7fadf4692234 returned 7fade0000000
searching 7fadf4695234 returned 7fade0000000
searching 7fadf4894234 returned 7fade0000000
searching 7fadf4895234 returned 7fade0000000
searching 7fadf4896234 returned 7fade0000000
searching 7fadf4a97234 returned 7fade0000000
searching 7fadf4ab5234 returned 7fade0000000
searching 7fadf4abd234 returned 7fade0000000
searching 7fadf4abe234 returned 7fade0000000
searching 7fadf4abf234 returned 7fade0000000
searching 7ffe245ac234 returned 7ffe245ce000
searching 7ffe245f7234 returned 7ffe245ce000
searching 7ffe245fa234 returned 7ffe245ce000
searching ffffffffff600234 returned ffffffffff601000
test remote::can_find_stub_page ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/reverie-a58fb0ed4ab182b2

running 1 test
test can_resolve_syscall_hooks ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/syscalls-a41198e91bf8e95c

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/tools_helper-590c2bba78ed60cd

running 1 test
test consts::det_tls_sanity_check ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests syscalls

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests tools_helper

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests reverie

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

make -C tests tests
make[1]: Entering directory '/home/logan/cloudseal/reverie/tests'
./x64-save-return-address
*ret = 400645, expected = 400645
RUST_BACKTRACE=1 /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./openat1 
[main] launching: ./openat1 []
3324 patched __vdso_clock_gettime@7ffff7ffb960
3324 patched __vdso_time@7ffff7ffb940
3324 patched __vdso_getcpu@7ffff7ffba20
3324 patched __vdso_gettimeofday@7ffff7ffb8b0
3324 patched SYS_rt_sigaction@7ffff7798feb [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 90, 60, 86, 00, 0f, 1f, 00] (callq 7ffff7fff080)
[pid 3324] rt_sigaction(SIGSEGV, {sa_handler=SIG_DFL, sa_mask=0, sa_flags=SA_SIGINFO|SA_RESETHAND|SA_RESTORER, sa_restorer=0x7ffff7798f20}, {sa_handler=SIG_DFL, sa_mask=0, sa_flags=, sa_restorer=0x0}, 8) = 0
3324 patched SYS_openat@7ffff7869c8c [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ef, 53, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
[pid 3324] openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = 3
3324 patched SYS_write@7ffff786a152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 4f, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
[pid 3324] write(2, "openat1: 3\n", 11) = openat1: 3
11
[pid 3324] openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = 4
[pid 3324] write(2, "openat1: 4\n", 11) = openat1: 4
11
3324 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
[pid 3324] exit_group(0) = /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./open-many 2>/dev/null
[main] launching: ./open-many []
3327 patched __vdso_gettimeofday@7ffff7ffb8b0
3327 patched __vdso_getcpu@7ffff7ffba20
3327 patched __vdso_time@7ffff7ffb940
3327 patched __vdso_clock_gettime@7ffff7ffb960
3327 patched SYS_openat@7ffff7869c8c [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ef, 53, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3327 patched SYS_access@7ffff786a245 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 4e, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3327 patched SYS_close@7ffff786a8d2 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, a9, 47, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3327 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
/home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./write-many 2>/dev/null
[main] launching: ./write-many []
3330 patched __vdso_clock_gettime@7ffff7ffb960
3330 patched __vdso_getcpu@7ffff7ffba20
3330 patched __vdso_time@7ffff7ffb940
3330 patched __vdso_gettimeofday@7ffff7ffb8b0
3330 patched SYS_write@7ffff786a152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 4f, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
0123456789
3330 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
/home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./getpid 2>/dev/null
[main] launching: ./getpid []
3333 patched __vdso_gettimeofday@7ffff7ffb8b0
3333 patched __vdso_time@7ffff7ffb940
3333 patched __vdso_getcpu@7ffff7ffba20
3333 patched __vdso_clock_gettime@7ffff7ffb960
3333 patched SYS_getpid@7ffff783f8e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, fb, 7b, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3333 patched SYS_fstat@7ffff78697c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, 58, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3333 patched SYS_write@7ffff786a152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 4f, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
my pid = 3333
3333 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
/home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./nanosleep 2>/dev/null
[main] launching: ./nanosleep []
3336 patched __vdso_clock_gettime@7ffff7ffb960
3336 patched __vdso_time@7ffff7ffb940
3336 patched __vdso_gettimeofday@7ffff7ffb8b0
3336 patched __vdso_getcpu@7ffff7ffba20
3336 patched SYS_nanosleep@7ffff7735c2f [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 4c, 94, 8c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3336 patched SYS_clock_gettime@7ffff7ffb965 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 16, 3b, 00, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3336 patched SYS_fstat@7ffff74427c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, c8, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3336 patched SYS_write@7ffff7443152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, bf, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
nanosleep, iteration: 0
nanosleep, iteration: 1
nanosleep, iteration: 2
nanosleep, iteration: 3
nanosleep, iteration: 4
nanosleep, iteration: 5
nanosleep, iteration: 6
nanosleep, iteration: 7
nanosleep, iteration: 8
nanosleep, iteration: 9
nanosleep, iteration: 10
nanosleep, iteration: 11
nanosleep, iteration: 12
nanosleep, iteration: 13
nanosleep, iteration: 14
nanosleep, iteration: 15
nanosleep, iteration: 16
nanosleep, iteration: 17
nanosleep, iteration: 18
nanosleep, iteration: 19
nanosleep, iteration: 20
nanosleep, iteration: 21
nanosleep, iteration: 22
nanosleep, iteration: 23
nanosleep, iteration: 24
nanosleep, iteration: 25
nanosleep, iteration: 26
nanosleep, iteration: 27
nanosleep, iteration: 28
nanosleep, iteration: 29
nanosleep, iteration: 30
nanosleep, iteration: 31
nanosleep, iteration: 32
nanosleep, iteration: 33
nanosleep, iteration: 34
nanosleep, iteration: 35
nanosleep, iteration: 36
nanosleep, iteration: 37
nanosleep, iteration: 38
nanosleep, iteration: 39
nanosleep, iteration: 40
nanosleep, iteration: 41
nanosleep, iteration: 42
nanosleep, iteration: 43
nanosleep, iteration: 44
nanosleep, iteration: 45
nanosleep, iteration: 46
nanosleep, iteration: 47
nanosleep, iteration: 48
nanosleep, iteration: 49
nanosleep, iteration: 50
nanosleep, iteration: 51
nanosleep, iteration: 52
nanosleep, iteration: 53
nanosleep, iteration: 54
nanosleep, iteration: 55
nanosleep, iteration: 56
nanosleep, iteration: 57
nanosleep, iteration: 58
nanosleep, iteration: 59
nanosleep, iteration: 60
nanosleep, iteration: 61
nanosleep, iteration: 62
nanosleep, iteration: 63
nanosleep, iteration: 64
nanosleep, iteration: 65
nanosleep, iteration: 66
nanosleep, iteration: 67
nanosleep, iteration: 68
nanosleep, iteration: 69
nanosleep, iteration: 70
nanosleep, iteration: 71
nanosleep, iteration: 72
nanosleep, iteration: 73
nanosleep, iteration: 74
nanosleep, iteration: 75
nanosleep, iteration: 76
nanosleep, iteration: 77
nanosleep, iteration: 78
nanosleep, iteration: 79
nanosleep, iteration: 80
nanosleep, iteration: 81
nanosleep, iteration: 82
nanosleep, iteration: 83
nanosleep, iteration: 84
nanosleep, iteration: 85
nanosleep, iteration: 86
nanosleep, iteration: 87
nanosleep, iteration: 88
nanosleep, iteration: 89
nanosleep, iteration: 90
nanosleep, iteration: 91
nanosleep, iteration: 92
nanosleep, iteration: 93
nanosleep, iteration: 94
nanosleep, iteration: 95
nanosleep, iteration: 96
nanosleep, iteration: 97
nanosleep, iteration: 98
nanosleep, iteration: 99
nanosleep, iteration: 100
nanosleep, iteration: 101
nanosleep, iteration: 102
nanosleep, iteration: 103
nanosleep, iteration: 104
nanosleep, iteration: 105
nanosleep, iteration: 106
nanosleep, iteration: 107
nanosleep, iteration: 108
nanosleep, iteration: 109
nanosleep, iteration: 110
nanosleep, iteration: 111
nanosleep, iteration: 112
nanosleep, iteration: 113
nanosleep, iteration: 114
nanosleep, iteration: 115
nanosleep, iteration: 116
nanosleep, iteration: 117
nanosleep, iteration: 118
nanosleep, iteration: 119
nanosleep, iteration: 120
nanosleep, iteration: 121
nanosleep, iteration: 122
nanosleep, iteration: 123
nanosleep, iteration: 124
nanosleep, iteration: 125
nanosleep, iteration: 126
nanosleep, iteration: 127
nanosleep, iteration: 128
nanosleep, iteration: 129
nanosleep, iteration: 130
nanosleep, iteration: 131
nanosleep, iteration: 132
nanosleep, iteration: 133
nanosleep, iteration: 134
nanosleep, iteration: 135
nanosleep, iteration: 136
nanosleep, iteration: 137
nanosleep, iteration: 138
nanosleep, iteration: 139
nanosleep, iteration: 140
nanosleep, iteration: 141
nanosleep, iteration: 142
nanosleep, iteration: 143
nanosleep, iteration: 144
nanosleep, iteration: 145
nanosleep, iteration: 146
nanosleep, iteration: 147
nanosleep, iteration: 148
nanosleep, iteration: 149
nanosleep, iteration: 150
nanosleep, iteration: 151
nanosleep, iteration: 152
nanosleep, iteration: 153
nanosleep, iteration: 154
nanosleep, iteration: 155
nanosleep, iteration: 156
nanosleep, iteration: 157
nanosleep, iteration: 158
nanosleep, iteration: 159
nanosleep, iteration: 160
nanosleep, iteration: 161
nanosleep, iteration: 162
nanosleep, iteration: 163
nanosleep, iteration: 164
nanosleep, iteration: 165
nanosleep, iteration: 166
nanosleep, iteration: 167
nanosleep, iteration: 168
nanosleep, iteration: 169
nanosleep, iteration: 170
nanosleep, iteration: 171
nanosleep, iteration: 172
nanosleep, iteration: 173
nanosleep, iteration: 174
nanosleep, iteration: 175
nanosleep, iteration: 176
nanosleep, iteration: 177
nanosleep, iteration: 178
nanosleep, iteration: 179
nanosleep, iteration: 180
nanosleep, iteration: 181
nanosleep, iteration: 182
nanosleep, iteration: 183
nanosleep, iteration: 184
nanosleep, iteration: 185
nanosleep, iteration: 186
nanosleep, iteration: 187
nanosleep, iteration: 188
nanosleep, iteration: 189
nanosleep, iteration: 190
nanosleep, iteration: 191
nanosleep, iteration: 192
nanosleep, iteration: 193
nanosleep, iteration: 194
nanosleep, iteration: 195
nanosleep, iteration: 196
nanosleep, iteration: 197
nanosleep, iteration: 198
nanosleep, iteration: 199
nanosleep, iteration: 200
nanosleep, iteration: 201
nanosleep, iteration: 202
nanosleep, iteration: 203
nanosleep, iteration: 204
nanosleep, iteration: 205
nanosleep, iteration: 206
nanosleep, iteration: 207
nanosleep, iteration: 208
nanosleep, iteration: 209
nanosleep, iteration: 210
nanosleep, iteration: 211
nanosleep, iteration: 212
nanosleep, iteration: 213
nanosleep, iteration: 214
nanosleep, iteration: 215
nanosleep, iteration: 216
nanosleep, iteration: 217
nanosleep, iteration: 218
nanosleep, iteration: 219
nanosleep, iteration: 220
nanosleep, iteration: 221
nanosleep, iteration: 222
nanosleep, iteration: 223
nanosleep, iteration: 224
nanosleep, iteration: 225
nanosleep, iteration: 226
nanosleep, iteration: 227
nanosleep, iteration: 228
nanosleep, iteration: 229
nanosleep, iteration: 230
nanosleep, iteration: 231
nanosleep, iteration: 232
nanosleep, iteration: 233
nanosleep, iteration: 234
nanosleep, iteration: 235
nanosleep, iteration: 236
nanosleep, iteration: 237
nanosleep, iteration: 238
nanosleep, iteration: 239
nanosleep, iteration: 240
nanosleep, iteration: 241
nanosleep, iteration: 242
nanosleep, iteration: 243
nanosleep, iteration: 244
nanosleep, iteration: 245
nanosleep, iteration: 246
nanosleep, iteration: 247
nanosleep, iteration: 248
nanosleep, iteration: 249
nanosleep, iteration: 250
nanosleep, iteration: 251
nanosleep, iteration: 252
nanosleep, iteration: 253
nanosleep, iteration: 254
nanosleep, iteration: 255
nanosleep, iteration: 256
nanosleep, iteration: 257
nanosleep, iteration: 258
nanosleep, iteration: 259
nanosleep, iteration: 260
nanosleep, iteration: 261
nanosleep, iteration: 262
nanosleep, iteration: 263
nanosleep, iteration: 264
nanosleep, iteration: 265
nanosleep, iteration: 266
nanosleep, iteration: 267
nanosleep, iteration: 268
nanosleep, iteration: 269
nanosleep, iteration: 270
nanosleep, iteration: 271
nanosleep, iteration: 272
nanosleep, iteration: 273
nanosleep, iteration: 274
nanosleep, iteration: 275
nanosleep, iteration: 276
nanosleep, iteration: 277
nanosleep, iteration: 278
nanosleep, iteration: 279
nanosleep, iteration: 280
nanosleep, iteration: 281
nanosleep, iteration: 282
nanosleep, iteration: 283
nanosleep, iteration: 284
nanosleep, iteration: 285
nanosleep, iteration: 286
nanosleep, iteration: 287
nanosleep, iteration: 288
nanosleep, iteration: 289
nanosleep, iteration: 290
nanosleep, iteration: 291
nanosleep, iteration: 292
nanosleep, iteration: 293
nanosleep, iteration: 294
nanosleep, iteration: 295
nanosleep, iteration: 296
nanosleep, iteration: 297
nanosleep, iteration: 298
nanosleep, iteration: 299
nanosleep, iteration: 300
nanosleep, iteration: 301
nanosleep, iteration: 302
nanosleep, iteration: 303
nanosleep, iteration: 304
nanosleep, iteration: 305
nanosleep, iteration: 306
nanosleep, iteration: 307
nanosleep, iteration: 308
nanosleep, iteration: 309
nanosleep, iteration: 310
nanosleep, iteration: 311
nanosleep, iteration: 312
nanosleep, iteration: 313
nanosleep, iteration: 314
nanosleep, iteration: 315
nanosleep, iteration: 316
nanosleep, iteration: 317
nanosleep, iteration: 318
nanosleep, iteration: 319
nanosleep, iteration: 320
nanosleep, iteration: 321
nanosleep, iteration: 322
nanosleep, iteration: 323
nanosleep, iteration: 324
nanosleep, iteration: 325
nanosleep, iteration: 326
nanosleep, iteration: 327
nanosleep, iteration: 328
nanosleep, iteration: 329
nanosleep, iteration: 330
nanosleep, iteration: 331
nanosleep, iteration: 332
nanosleep, iteration: 333
nanosleep, iteration: 334
nanosleep, iteration: 335
nanosleep, iteration: 336
nanosleep, iteration: 337
nanosleep, iteration: 338
nanosleep, iteration: 339
nanosleep, iteration: 340
nanosleep, iteration: 341
nanosleep, iteration: 342
nanosleep, iteration: 343
nanosleep, iteration: 344
nanosleep, iteration: 345
nanosleep, iteration: 346
nanosleep, iteration: 347
nanosleep, iteration: 348
nanosleep, iteration: 349
nanosleep, iteration: 350
nanosleep, iteration: 351
nanosleep, iteration: 352
nanosleep, iteration: 353
nanosleep, iteration: 354
nanosleep, iteration: 355
nanosleep, iteration: 356
nanosleep, iteration: 357
nanosleep, iteration: 358
nanosleep, iteration: 359
nanosleep, iteration: 360
nanosleep, iteration: 361
nanosleep, iteration: 362
nanosleep, iteration: 363
nanosleep, iteration: 364
nanosleep, iteration: 365
nanosleep, iteration: 366
nanosleep, iteration: 367
nanosleep, iteration: 368
nanosleep, iteration: 369
nanosleep, iteration: 370
nanosleep, iteration: 371
nanosleep, iteration: 372
nanosleep, iteration: 373
nanosleep, iteration: 374
nanosleep, iteration: 375
nanosleep, iteration: 376
nanosleep, iteration: 377
nanosleep, iteration: 378
nanosleep, iteration: 379
nanosleep, iteration: 380
nanosleep, iteration: 381
nanosleep, iteration: 382
nanosleep, iteration: 383
nanosleep, iteration: 384
nanosleep, iteration: 385
nanosleep, iteration: 386
nanosleep, iteration: 387
nanosleep, iteration: 388
nanosleep, iteration: 389
nanosleep, iteration: 390
nanosleep, iteration: 391
nanosleep, iteration: 392
nanosleep, iteration: 393
nanosleep, iteration: 394
nanosleep, iteration: 395
nanosleep, iteration: 396
nanosleep, iteration: 397
nanosleep, iteration: 398
nanosleep, iteration: 399
nanosleep, iteration: 400
nanosleep, iteration: 401
nanosleep, iteration: 402
nanosleep, iteration: 403
nanosleep, iteration: 404
nanosleep, iteration: 405
nanosleep, iteration: 406
nanosleep, iteration: 407
nanosleep, iteration: 408
nanosleep, iteration: 409
nanosleep, iteration: 410
nanosleep, iteration: 411
nanosleep, iteration: 412
nanosleep, iteration: 413
nanosleep, iteration: 414
nanosleep, iteration: 415
nanosleep, iteration: 416
nanosleep, iteration: 417
nanosleep, iteration: 418
nanosleep, iteration: 419
nanosleep, iteration: 420
nanosleep, iteration: 421
nanosleep, iteration: 422
nanosleep, iteration: 423
nanosleep, iteration: 424
nanosleep, iteration: 425
nanosleep, iteration: 426
nanosleep, iteration: 427
nanosleep, iteration: 428
nanosleep, iteration: 429
nanosleep, iteration: 430
nanosleep, iteration: 431
nanosleep, iteration: 432
nanosleep, iteration: 433
nanosleep, iteration: 434
nanosleep, iteration: 435
nanosleep, iteration: 436
nanosleep, iteration: 437
nanosleep, iteration: 438
nanosleep, iteration: 439
nanosleep, iteration: 440
nanosleep, iteration: 441
nanosleep, iteration: 442
nanosleep, iteration: 443
nanosleep, iteration: 444
nanosleep, iteration: 445
nanosleep, iteration: 446
nanosleep, iteration: 447
nanosleep, iteration: 448
nanosleep, iteration: 449
nanosleep, iteration: 450
nanosleep, iteration: 451
nanosleep, iteration: 452
nanosleep, iteration: 453
nanosleep, iteration: 454
nanosleep, iteration: 455
nanosleep, iteration: 456
nanosleep, iteration: 457
nanosleep, iteration: 458
nanosleep, iteration: 459
nanosleep, iteration: 460
nanosleep, iteration: 461
nanosleep, iteration: 462
nanosleep, iteration: 463
nanosleep, iteration: 464
nanosleep, iteration: 465
nanosleep, iteration: 466
nanosleep, iteration: 467
nanosleep, iteration: 468
nanosleep, iteration: 469
nanosleep, iteration: 470
nanosleep, iteration: 471
nanosleep, iteration: 472
nanosleep, iteration: 473
nanosleep, iteration: 474
nanosleep, iteration: 475
nanosleep, iteration: 476
nanosleep, iteration: 477
nanosleep, iteration: 478
nanosleep, iteration: 479
nanosleep, iteration: 480
nanosleep, iteration: 481
nanosleep, iteration: 482
nanosleep, iteration: 483
nanosleep, iteration: 484
nanosleep, iteration: 485
nanosleep, iteration: 486
nanosleep, iteration: 487
nanosleep, iteration: 488
nanosleep, iteration: 489
nanosleep, iteration: 490
nanosleep, iteration: 491
nanosleep, iteration: 492
nanosleep, iteration: 493
nanosleep, iteration: 494
nanosleep, iteration: 495
nanosleep, iteration: 496
nanosleep, iteration: 497
nanosleep, iteration: 498
nanosleep, iteration: 499
nanosleep, iteration: 500
nanosleep, iteration: 501
nanosleep, iteration: 502
nanosleep, iteration: 503
nanosleep, iteration: 504
nanosleep, iteration: 505
nanosleep, iteration: 506
nanosleep, iteration: 507
nanosleep, iteration: 508
nanosleep, iteration: 509
nanosleep, iteration: 510
nanosleep, iteration: 511
nanosleep, iteration: 512
nanosleep, iteration: 513
nanosleep, iteration: 514
nanosleep, iteration: 515
nanosleep, iteration: 516
nanosleep, iteration: 517
nanosleep, iteration: 518
nanosleep, iteration: 519
nanosleep, iteration: 520
nanosleep, iteration: 521
nanosleep, iteration: 522
nanosleep, iteration: 523
nanosleep, iteration: 524
nanosleep, iteration: 525
nanosleep, iteration: 526
nanosleep, iteration: 527
nanosleep, iteration: 528
nanosleep, iteration: 529
nanosleep, iteration: 530
nanosleep, iteration: 531
nanosleep, iteration: 532
nanosleep, iteration: 533
nanosleep, iteration: 534
nanosleep, iteration: 535
nanosleep, iteration: 536
nanosleep, iteration: 537
nanosleep, iteration: 538
nanosleep, iteration: 539
nanosleep, iteration: 540
nanosleep, iteration: 541
nanosleep, iteration: 542
nanosleep, iteration: 543
nanosleep, iteration: 544
nanosleep, iteration: 545
nanosleep, iteration: 546
nanosleep, iteration: 547
nanosleep, iteration: 548
nanosleep, iteration: 549
nanosleep, iteration: 550
nanosleep, iteration: 551
nanosleep, iteration: 552
nanosleep, iteration: 553
nanosleep, iteration: 554
nanosleep, iteration: 555
nanosleep, iteration: 556
nanosleep, iteration: 557
nanosleep, iteration: 558
nanosleep, iteration: 559
nanosleep, iteration: 560
nanosleep, iteration: 561
nanosleep, iteration: 562
nanosleep, iteration: 563
nanosleep, iteration: 564
nanosleep, iteration: 565
nanosleep, iteration: 566
nanosleep, iteration: 567
nanosleep, iteration: 568
nanosleep, iteration: 569
nanosleep, iteration: 570
nanosleep, iteration: 571
nanosleep, iteration: 572
nanosleep, iteration: 573
nanosleep, iteration: 574
nanosleep, iteration: 575
nanosleep, iteration: 576
nanosleep, iteration: 577
nanosleep, iteration: 578
nanosleep, iteration: 579
nanosleep, iteration: 580
nanosleep, iteration: 581
nanosleep, iteration: 582
nanosleep, iteration: 583
nanosleep, iteration: 584
nanosleep, iteration: 585
nanosleep, iteration: 586
nanosleep, iteration: 587
nanosleep, iteration: 588
nanosleep, iteration: 589
nanosleep, iteration: 590
nanosleep, iteration: 591
nanosleep, iteration: 592
nanosleep, iteration: 593
nanosleep, iteration: 594
nanosleep, iteration: 595
nanosleep, iteration: 596
nanosleep, iteration: 597
nanosleep, iteration: 598
nanosleep, iteration: 599
nanosleep, iteration: 600
nanosleep, iteration: 601
nanosleep, iteration: 602
nanosleep, iteration: 603
nanosleep, iteration: 604
nanosleep, iteration: 605
nanosleep, iteration: 606
nanosleep, iteration: 607
nanosleep, iteration: 608
nanosleep, iteration: 609
nanosleep, iteration: 610
nanosleep, iteration: 611
nanosleep, iteration: 612
nanosleep, iteration: 613
nanosleep, iteration: 614
nanosleep, iteration: 615
nanosleep, iteration: 616
nanosleep, iteration: 617
nanosleep, iteration: 618
nanosleep, iteration: 619
nanosleep, iteration: 620
nanosleep, iteration: 621
nanosleep, iteration: 622
nanosleep, iteration: 623
nanosleep, iteration: 624
nanosleep, iteration: 625
nanosleep, iteration: 626
nanosleep, iteration: 627
nanosleep, iteration: 628
nanosleep, iteration: 629
nanosleep, iteration: 630
nanosleep, iteration: 631
nanosleep, iteration: 632
nanosleep, iteration: 633
nanosleep, iteration: 634
nanosleep, iteration: 635
nanosleep, iteration: 636
nanosleep, iteration: 637
nanosleep, iteration: 638
nanosleep, iteration: 639
nanosleep, iteration: 640
nanosleep, iteration: 641
nanosleep, iteration: 642
nanosleep, iteration: 643
nanosleep, iteration: 644
nanosleep, iteration: 645
nanosleep, iteration: 646
nanosleep, iteration: 647
nanosleep, iteration: 648
nanosleep, iteration: 649
nanosleep, iteration: 650
nanosleep, iteration: 651
nanosleep, iteration: 652
nanosleep, iteration: 653
nanosleep, iteration: 654
nanosleep, iteration: 655
nanosleep, iteration: 656
nanosleep, iteration: 657
nanosleep, iteration: 658
nanosleep, iteration: 659
nanosleep, iteration: 660
nanosleep, iteration: 661
nanosleep, iteration: 662
nanosleep, iteration: 663
nanosleep, iteration: 664
nanosleep, iteration: 665
nanosleep, iteration: 666
nanosleep, iteration: 667
nanosleep, iteration: 668
nanosleep, iteration: 669
nanosleep, iteration: 670
nanosleep, iteration: 671
nanosleep, iteration: 672
nanosleep, iteration: 673
nanosleep, iteration: 674
nanosleep, iteration: 675
nanosleep, iteration: 676
nanosleep, iteration: 677
nanosleep, iteration: 678
nanosleep, iteration: 679
nanosleep, iteration: 680
nanosleep, iteration: 681
nanosleep, iteration: 682
nanosleep, iteration: 683
nanosleep, iteration: 684
nanosleep, iteration: 685
nanosleep, iteration: 686
nanosleep, iteration: 687
nanosleep, iteration: 688
nanosleep, iteration: 689
nanosleep, iteration: 690
nanosleep, iteration: 691
nanosleep, iteration: 692
nanosleep, iteration: 693
nanosleep, iteration: 694
nanosleep, iteration: 695
nanosleep, iteration: 696
nanosleep, iteration: 697
nanosleep, iteration: 698
nanosleep, iteration: 699
nanosleep, iteration: 700
nanosleep, iteration: 701
nanosleep, iteration: 702
nanosleep, iteration: 703
nanosleep, iteration: 704
nanosleep, iteration: 705
nanosleep, iteration: 706
nanosleep, iteration: 707
nanosleep, iteration: 708
nanosleep, iteration: 709
nanosleep, iteration: 710
nanosleep, iteration: 711
nanosleep, iteration: 712
nanosleep, iteration: 713
nanosleep, iteration: 714
nanosleep, iteration: 715
nanosleep, iteration: 716
nanosleep, iteration: 717
nanosleep, iteration: 718
nanosleep, iteration: 719
nanosleep, iteration: 720
nanosleep, iteration: 721
nanosleep, iteration: 722
nanosleep, iteration: 723
nanosleep, iteration: 724
nanosleep, iteration: 725
nanosleep, iteration: 726
nanosleep, iteration: 727
nanosleep, iteration: 728
nanosleep, iteration: 729
nanosleep, iteration: 730
nanosleep, iteration: 731
nanosleep, iteration: 732
nanosleep, iteration: 733
nanosleep, iteration: 734
nanosleep, iteration: 735
nanosleep, iteration: 736
nanosleep, iteration: 737
nanosleep, iteration: 738
nanosleep, iteration: 739
nanosleep, iteration: 740
nanosleep, iteration: 741
nanosleep, iteration: 742
nanosleep, iteration: 743
nanosleep, iteration: 744
nanosleep, iteration: 745
nanosleep, iteration: 746
nanosleep, iteration: 747
nanosleep, iteration: 748
nanosleep, iteration: 749
nanosleep, iteration: 750
nanosleep, iteration: 751
nanosleep, iteration: 752
nanosleep, iteration: 753
nanosleep, iteration: 754
nanosleep, iteration: 755
nanosleep, iteration: 756
nanosleep, iteration: 757
nanosleep, iteration: 758
nanosleep, iteration: 759
nanosleep, iteration: 760
nanosleep, iteration: 761
nanosleep, iteration: 762
nanosleep, iteration: 763
nanosleep, iteration: 764
nanosleep, iteration: 765
nanosleep, iteration: 766
nanosleep, iteration: 767
nanosleep, iteration: 768
nanosleep, iteration: 769
nanosleep, iteration: 770
nanosleep, iteration: 771
nanosleep, iteration: 772
nanosleep, iteration: 773
nanosleep, iteration: 774
nanosleep, iteration: 775
nanosleep, iteration: 776
nanosleep, iteration: 777
nanosleep, iteration: 778
nanosleep, iteration: 779
nanosleep, iteration: 780
nanosleep, iteration: 781
nanosleep, iteration: 782
nanosleep, iteration: 783
nanosleep, iteration: 784
nanosleep, iteration: 785
nanosleep, iteration: 786
nanosleep, iteration: 787
nanosleep, iteration: 788
nanosleep, iteration: 789
nanosleep, iteration: 790
nanosleep, iteration: 791
nanosleep, iteration: 792
nanosleep, iteration: 793
nanosleep, iteration: 794
nanosleep, iteration: 795
nanosleep, iteration: 796
nanosleep, iteration: 797
nanosleep, iteration: 798
nanosleep, iteration: 799
nanosleep, iteration: 800
nanosleep, iteration: 801
nanosleep, iteration: 802
nanosleep, iteration: 803
nanosleep, iteration: 804
nanosleep, iteration: 805
nanosleep, iteration: 806
nanosleep, iteration: 807
nanosleep, iteration: 808
nanosleep, iteration: 809
nanosleep, iteration: 810
nanosleep, iteration: 811
nanosleep, iteration: 812
nanosleep, iteration: 813
nanosleep, iteration: 814
nanosleep, iteration: 815
nanosleep, iteration: 816
nanosleep, iteration: 817
nanosleep, iteration: 818
nanosleep, iteration: 819
nanosleep, iteration: 820
nanosleep, iteration: 821
nanosleep, iteration: 822
nanosleep, iteration: 823
nanosleep, iteration: 824
nanosleep, iteration: 825
nanosleep, iteration: 826
nanosleep, iteration: 827
nanosleep, iteration: 828
nanosleep, iteration: 829
nanosleep, iteration: 830
nanosleep, iteration: 831
nanosleep, iteration: 832
nanosleep, iteration: 833
nanosleep, iteration: 834
nanosleep, iteration: 835
nanosleep, iteration: 836
nanosleep, iteration: 837
nanosleep, iteration: 838
nanosleep, iteration: 839
nanosleep, iteration: 840
nanosleep, iteration: 841
nanosleep, iteration: 842
nanosleep, iteration: 843
nanosleep, iteration: 844
nanosleep, iteration: 845
nanosleep, iteration: 846
nanosleep, iteration: 847
nanosleep, iteration: 848
nanosleep, iteration: 849
nanosleep, iteration: 850
nanosleep, iteration: 851
nanosleep, iteration: 852
nanosleep, iteration: 853
nanosleep, iteration: 854
nanosleep, iteration: 855
nanosleep, iteration: 856
nanosleep, iteration: 857
nanosleep, iteration: 858
nanosleep, iteration: 859
nanosleep, iteration: 860
nanosleep, iteration: 861
nanosleep, iteration: 862
nanosleep, iteration: 863
nanosleep, iteration: 864
nanosleep, iteration: 865
nanosleep, iteration: 866
nanosleep, iteration: 867
nanosleep, iteration: 868
nanosleep, iteration: 869
nanosleep, iteration: 870
nanosleep, iteration: 871
nanosleep, iteration: 872
nanosleep, iteration: 873
nanosleep, iteration: 874
nanosleep, iteration: 875
nanosleep, iteration: 876
nanosleep, iteration: 877
nanosleep, iteration: 878
nanosleep, iteration: 879
nanosleep, iteration: 880
nanosleep, iteration: 881
nanosleep, iteration: 882
nanosleep, iteration: 883
nanosleep, iteration: 884
nanosleep, iteration: 885
nanosleep, iteration: 886
nanosleep, iteration: 887
nanosleep, iteration: 888
nanosleep, iteration: 889
nanosleep, iteration: 890
nanosleep, iteration: 891
nanosleep, iteration: 892
nanosleep, iteration: 893
nanosleep, iteration: 894
nanosleep, iteration: 895
nanosleep, iteration: 896
nanosleep, iteration: 897
nanosleep, iteration: 898
nanosleep, iteration: 899
nanosleep, iteration: 900
nanosleep, iteration: 901
nanosleep, iteration: 902
nanosleep, iteration: 903
nanosleep, iteration: 904
nanosleep, iteration: 905
nanosleep, iteration: 906
nanosleep, iteration: 907
nanosleep, iteration: 908
nanosleep, iteration: 909
nanosleep, iteration: 910
nanosleep, iteration: 911
nanosleep, iteration: 912
nanosleep, iteration: 913
nanosleep, iteration: 914
nanosleep, iteration: 915
nanosleep, iteration: 916
nanosleep, iteration: 917
nanosleep, iteration: 918
nanosleep, iteration: 919
nanosleep, iteration: 920
nanosleep, iteration: 921
nanosleep, iteration: 922
nanosleep, iteration: 923
nanosleep, iteration: 924
nanosleep, iteration: 925
nanosleep, iteration: 926
nanosleep, iteration: 927
nanosleep, iteration: 928
nanosleep, iteration: 929
nanosleep, iteration: 930
nanosleep, iteration: 931
nanosleep, iteration: 932
nanosleep, iteration: 933
nanosleep, iteration: 934
nanosleep, iteration: 935
nanosleep, iteration: 936
nanosleep, iteration: 937
nanosleep, iteration: 938
nanosleep, iteration: 939
nanosleep, iteration: 940
nanosleep, iteration: 941
nanosleep, iteration: 942
nanosleep, iteration: 943
nanosleep, iteration: 944
nanosleep, iteration: 945
nanosleep, iteration: 946
nanosleep, iteration: 947
nanosleep, iteration: 948
nanosleep, iteration: 949
nanosleep, iteration: 950
nanosleep, iteration: 951
nanosleep, iteration: 952
nanosleep, iteration: 953
nanosleep, iteration: 954
nanosleep, iteration: 955
nanosleep, iteration: 956
nanosleep, iteration: 957
nanosleep, iteration: 958
nanosleep, iteration: 959
nanosleep, iteration: 960
nanosleep, iteration: 961
nanosleep, iteration: 962
nanosleep, iteration: 963
nanosleep, iteration: 964
nanosleep, iteration: 965
nanosleep, iteration: 966
nanosleep, iteration: 967
nanosleep, iteration: 968
nanosleep, iteration: 969
nanosleep, iteration: 970
nanosleep, iteration: 971
nanosleep, iteration: 972
nanosleep, iteration: 973
nanosleep, iteration: 974
nanosleep, iteration: 975
nanosleep, iteration: 976
nanosleep, iteration: 977
nanosleep, iteration: 978
nanosleep, iteration: 979
nanosleep, iteration: 980
nanosleep, iteration: 981
nanosleep, iteration: 982
nanosleep, iteration: 983
nanosleep, iteration: 984
nanosleep, iteration: 985
nanosleep, iteration: 986
nanosleep, iteration: 987
nanosleep, iteration: 988
nanosleep, iteration: 989
nanosleep, iteration: 990
nanosleep, iteration: 991
nanosleep, iteration: 992
nanosleep, iteration: 993
nanosleep, iteration: 994
nanosleep, iteration: 995
nanosleep, iteration: 996
nanosleep, iteration: 997
nanosleep, iteration: 998
nanosleep, iteration: 999
time elapsed 1158854us for 1000 iterations, mean: 1158.854us
3336 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
/home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./clock-nanosleep 2>/dev/null
[main] launching: ./clock-nanosleep []
3339 patched __vdso_clock_gettime@7ffff7ffb960
3339 patched __vdso_getcpu@7ffff7ffba20
3339 patched __vdso_gettimeofday@7ffff7ffb8b0
3339 patched __vdso_time@7ffff7ffb940
3339 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
/home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./getpid-pie 2>/dev/null
[main] launching: ./getpid-pie []
3342 patched __vdso_time@7ffff7ffb940
3342 patched __vdso_getcpu@7ffff7ffba20
3342 patched __vdso_gettimeofday@7ffff7ffb8b0
3342 patched __vdso_clock_gettime@7ffff7ffb960
3342 patched SYS_getpid@7ffff783f8e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, fb, 7b, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3342 patched SYS_getpid@555555554715 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 66, 2d, 22, 00, 66, 0f, 1f, 44, 00, 00] (callq 555555777480)
3342 patched SYS_fstat@7ffff78697c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, 58, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3342 patched SYS_write@7ffff786a152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 4f, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
pid = 3342
3342 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./test1.sh 2>/dev/null
[main] launching: ./test1.sh []
3346 patched __vdso_time@7ffff7ffb940
3346 patched __vdso_getcpu@7ffff7ffba20
3346 patched __vdso_clock_gettime@7ffff7ffb960
3346 patched __vdso_gettimeofday@7ffff7ffb8b0
3346 patched SYS_openat@7ffff743bc8c [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ef, 33, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_close@7ffff743c8d2 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, a9, 27, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_openat@7ffff743bdaf [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, cc, 32, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_fstat@7ffff743b7c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, 38, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_mmap@7ffff7447a11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 76, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_close@7ffff743c945 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 27, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_getuid@7ffff7411905 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 76, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_getgid@7ffff7411925 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 56, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_geteuid@7ffff7411915 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 66, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_getegid@7ffff7411935 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 46, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_rt_sigprocmask@7ffff736b14b [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 30, 3f, c9, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_time@7ffff7ffb945 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 36, 3b, 00, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_ioctl@7ffff74425d5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 26, ca, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3346 patched SYS_sysinfo@7ffff744e515 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, e6, 0a, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3346 patched SYS_rt_sigaction@7ffff736afeb [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 90, 40, c9, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_uname@7ffff7410545 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, b6, ea, be, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3346 patched SYS_stat@7ffff743b773 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 08, 39, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_getpid@7ffff74118e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_futex@7ffff6f1484c [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 2f, a8, 0e, 01, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_getppid@7ffff74118f5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 86, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_gettimeofday@7ffff7ffb8b5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, c6, 3b, 00, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_getpgrp@7ffff7411ba5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, d6, d8, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3346 patched SYS_prlimit64@7ffff7441f9e [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, dd, d0, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_ioctl@7ffff7441ca6 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, d5, d3, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_lseek@7ffff743c215 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 66, 2e, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_read@7ffff743c07f [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, fc, 2f, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_fcntl@7ffff743c5ef [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 8c, 2a, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_dup2@7ffff743c9a5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 56, 26, bc, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3346 patched SYS_write@7ffff743c152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 2f, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
hello, world, mypid=3346
3347 patched SYS_set_robust_list@7ffff6f0aca1 [0f, 05, c3, 66, 90] => [e8, 5a, 49, 0f, 01] (callq 7ffff7fff600)
3346 patched SYS_wait4@7ffff7410685 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, e9, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
fork a child, mypid=3347
3347 patched SYS_exit_group@7ffff7410e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, e2, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3346 patched SYS_exit_group@7ffff7410e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, e2, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./test2.sh 2>/dev/null
[main] launching: ./test2.sh []
3355 patched __vdso_time@7ffff7ffb940
3355 patched __vdso_getcpu@7ffff7ffba20
3355 patched __vdso_gettimeofday@7ffff7ffb8b0
3355 patched __vdso_clock_gettime@7ffff7ffb960
3355 patched SYS_openat@7ffff743bc8c [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ef, 33, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_close@7ffff743c8d2 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, a9, 27, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_openat@7ffff743bdaf [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, cc, 32, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_fstat@7ffff743b7c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, 38, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_mmap@7ffff7447a11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 76, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_close@7ffff743c945 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 27, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_getuid@7ffff7411905 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 76, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_getgid@7ffff7411925 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 56, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_geteuid@7ffff7411915 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 66, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_getegid@7ffff7411935 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 46, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_rt_sigprocmask@7ffff736b14b [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 30, 3f, c9, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_time@7ffff7ffb945 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 36, 3b, 00, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_ioctl@7ffff74425d5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 26, ca, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3355 patched SYS_sysinfo@7ffff744e515 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, e6, 0a, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3355 patched SYS_rt_sigaction@7ffff736afeb [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 90, 40, c9, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_uname@7ffff7410545 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, b6, ea, be, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3355 patched SYS_stat@7ffff743b773 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 08, 39, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_getpid@7ffff74118e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_futex@7ffff6f1484c [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 2f, a8, 0e, 01, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_getppid@7ffff74118f5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 86, db, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_gettimeofday@7ffff7ffb8b5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, c6, 3b, 00, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_getpgrp@7ffff7411ba5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, d6, d8, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3355 patched SYS_prlimit64@7ffff7441f9e [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, dd, d0, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_ioctl@7ffff7441ca6 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, d5, d3, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_lseek@7ffff743c215 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 66, 2e, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_read@7ffff743c07f [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, fc, 2f, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_fcntl@7ffff743c5ef [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 8c, 2a, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3355 patched SYS_dup2@7ffff743c9a5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 56, 26, bc, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3356 patched SYS_set_robust_list@7ffff6f0aca1 [0f, 05, c3, 66, 90] => [e8, 5a, 49, 0f, 01] (callq 7ffff7fff600)
3357 patched SYS_set_robust_list@7ffff6f0aca1 [0f, 05, c3, 66, 90] => [e8, 5a, 49, 0f, 01] (callq 7ffff7fff600)
3355 patched SYS_wait4@7ffff7410685 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, e9, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3356 patched SYS_write@7ffff743c152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 2f, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
hello, world, mypid=3356
3356 patched SYS_access@7ffff743c245 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 2e, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3357 patched SYS_exit_group@7ffff7410e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, e2, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3358 patched SYS_write@7ffff743c152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, 2f, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
fork a child, mypid=3358
3355 patched SYS_exit_group@7ffff7410e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, e2, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3358 patched SYS_access@7ffff743c245 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 2e, bc, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3356 patched SYS_wait4@7ffff7410685 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, e9, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_execve@7ffff7410e35 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, c6, e1, be, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3358 patched SYS_wait4@7ffff7410685 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, e9, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3361 patched SYS_execve@7ffff7410e35 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, c6, e1, be, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3361 patched __vdso_time@7ffff7ffb940
3361 patched __vdso_getcpu@7ffff7ffba20
3361 patched __vdso_gettimeofday@7ffff7ffb8b0
3361 patched __vdso_clock_gettime@7ffff7ffb960
3360 patched __vdso_time@7ffff7ffb940
3360 patched __vdso_getcpu@7ffff7ffba20
3360 patched __vdso_gettimeofday@7ffff7ffb8b0
3360 patched __vdso_clock_gettime@7ffff7ffb960
3361 patched SYS_openat@7ffff7869daf [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, cc, 52, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_openat@7ffff7869daf [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, cc, 52, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3361 patched SYS_fstat@7ffff78697c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, 58, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_fstat@7ffff78697c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, 58, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3361 patched SYS_mmap@7ffff7875a11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 96, 78, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_mmap@7ffff7875a11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 96, 78, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3361 patched SYS_close@7ffff786a945 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 47, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_close@7ffff786a945 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 36, 47, 79, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3361 patched SYS_nanosleep@7ffff783e9a2 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, d9, 06, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_nanosleep@7ffff783e9a2 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, d9, 06, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3361 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3360 patched SYS_exit_group@7ffff783ee04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 02, 7c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3356 patched SYS_exit_group@7ffff7410e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, e2, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3358 patched SYS_exit_group@7ffff7410e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, e2, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./segfault && exit 1 || exit 0 2>/dev/null
[main] launching: ./segfault []
3365 patched __vdso_time@7ffff7ffb940
3365 patched __vdso_gettimeofday@7ffff7ffb8b0
3365 patched __vdso_clock_gettime@7ffff7ffb960
3365 patched __vdso_getcpu@7ffff7ffba20
Task { tid: 3365, pid: 3365, ppid: 3365, pgid: 3363, state: Stopped(SIGSEGV), signal: None, dpc: None} got SIGSEGV si_errno: 0, si_code: 1, regs
rax           4004a0 rbx                0 rcx           4004b0 rdx     7fffffffde48
rsi     7fffffffde38 rdi                1 rbp           4004b0 rsp     7fffffffdd58
 r8     7ffff771fd80  r9     7ffff771fd80 r10                0 r11              246
r12           4003b0 r13     7fffffffde30 r14                0 r15                0
rip           4004a0 eflags            10246
cs 33 ss 2b ds 0 es 0
fs 0 gs 0
stackframe from rsp@7fffffffdd58
    7fffffffdd18:           4004fd
    7fffffffdd20:     7ffff7de59a0
    7fffffffdd28:                0
    7fffffffdd30:           4004b0
    7fffffffdd38:           4003b0
    7fffffffdd40:     7fffffffde30
    7fffffffdd48:                0
    7fffffffdd50:                0
 => 7fffffffdd58:     7ffff7354b97
    7fffffffdd60:                1
    7fffffffdd68:     7fffffffde38
    7fffffffdd70:        1ffffddb8
    7fffffffdd78:           4004a0
    7fffffffdd80:                0
    7fffffffdd88: b9e3ac63bd5f48fb
    7fffffffdd90:           4003b0
    7fffffffdd98:     7fffffffde30
    7fffffffdda0:                0
    7fffffffdda8:                0
    7fffffffddb0: 461c531c0eff48fb
    7fffffffddb8: 461c428922a148fb
    7fffffffddc0:     7fff00000000
    7fffffffddc8:                0
    7fffffffddd0:                0
    7fffffffddd8:     7ffff7de5733

insn @0x4004a0 = [48, c7, 04, 25, 23, 01, 00, 00, 78, 56, 34, 12, 31, c0, c3, 90]
400000-401000 r-xp 00000000 fd:00 5899867                                /home/logan/cloudseal/reverie/tests/segfault
600000-601000 r--p 00000000 fd:00 5899867                                /home/logan/cloudseal/reverie/tests/segfault
601000-602000 rw-p 00001000 fd:00 5899867                                /home/logan/cloudseal/reverie/tests/segfault
602000-623000 rw-p 00000000 00:00 0                                      
70000000-70004000 rwxp 00000000 00:00 0                                  
7ffff6023000-7ffff6141000 r-xp 00000000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff6141000-7ffff6142000 r-xp 0011e000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff6142000-7ffff620a000 r-xp 0011f000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff620a000-7ffff640a000 ---p 001e7000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff640a000-7ffff640e000 r--p 001e7000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff640e000-7ffff6410000 rw-p 001eb000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff6410000-7ffff6414000 rw-p 00000000 00:00 0                          
7ffff6414000-7ffff642b000 r-xp 00000000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff642b000-7ffff662a000 ---p 00017000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff662a000-7ffff662b000 r--p 00016000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff662b000-7ffff662c000 rw-p 00017000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff662c000-7ffff6646000 r-xp 00000000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff6646000-7ffff6845000 ---p 0001a000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff6845000-7ffff6846000 r--p 00019000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff6846000-7ffff6847000 rw-p 0001a000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff6847000-7ffff684b000 rw-p 00000000 00:00 0                          
7ffff684b000-7ffff6852000 r-xp 00000000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff6852000-7ffff6a51000 ---p 00007000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff6a51000-7ffff6a52000 r--p 00006000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff6a52000-7ffff6a53000 rw-p 00007000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff6a53000-7ffff6a56000 r-xp 00000000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff6a56000-7ffff6c55000 ---p 00003000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff6c55000-7ffff6c56000 r--p 00002000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff6c56000-7ffff6c57000 rw-p 00003000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff6c57000-7ffff6d0c000 r-xp 00000000 fd:00 5768905                    /home/logan/cloudseal/reverie/lib/libecho.so
7ffff6d0c000-7ffff6f0c000 ---p 000b5000 fd:00 5768905                    /home/logan/cloudseal/reverie/lib/libecho.so
7ffff6f0c000-7ffff6f12000 r--p 000b5000 fd:00 5768905                    /home/logan/cloudseal/reverie/lib/libecho.so
7ffff6f12000-7ffff6f17000 rw-p 000bb000 fd:00 5768905                    /home/logan/cloudseal/reverie/lib/libecho.so
7ffff6f17000-7ffff6f2e000 r-xp 00000000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff6f2e000-7ffff712d000 ---p 00017000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff712d000-7ffff712e000 r--p 00016000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff712e000-7ffff712f000 rw-p 00017000 fd:00 8914562                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff712f000-7ffff7132000 r-xp 00000000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff7132000-7ffff7331000 ---p 00003000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff7331000-7ffff7332000 r--p 00002000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff7332000-7ffff7333000 rw-p 00003000 fd:00 8917706                    /lib/x86_64-linux-gnu/libdl-2.27.so
7ffff7333000-7ffff7451000 r-xp 00000000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff7451000-7ffff7452000 r-xp 0011e000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff7452000-7ffff751a000 r-xp 0011f000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff751a000-7ffff771a000 ---p 001e7000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff771a000-7ffff771e000 r--p 001e7000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff771e000-7ffff7720000 rw-p 001eb000 fd:00 8917683                    /lib/x86_64-linux-gnu/libc-2.27.so
7ffff7720000-7ffff7724000 rw-p 00000000 00:00 0                          
7ffff7724000-7ffff773e000 r-xp 00000000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff773e000-7ffff793d000 ---p 0001a000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff793d000-7ffff793e000 r--p 00019000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff793e000-7ffff793f000 rw-p 0001a000 fd:00 8917816                    /lib/x86_64-linux-gnu/libpthread-2.27.so
7ffff793f000-7ffff7943000 rw-p 00000000 00:00 0                          
7ffff7943000-7ffff794a000 r-xp 00000000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff794a000-7ffff7b49000 ---p 00007000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff7b49000-7ffff7b4a000 r--p 00006000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff7b4a000-7ffff7b4b000 rw-p 00007000 fd:00 8917824                    /lib/x86_64-linux-gnu/librt-2.27.so
7ffff7b4b000-7ffff7bd0000 r-xp 00000000 fd:00 5768603                    /home/logan/cloudseal/reverie/lib/libpreloader.so
7ffff7bd0000-7ffff7dcf000 ---p 00085000 fd:00 5768603                    /home/logan/cloudseal/reverie/lib/libpreloader.so
7ffff7dcf000-7ffff7dd4000 r--p 00084000 fd:00 5768603                    /home/logan/cloudseal/reverie/lib/libpreloader.so
7ffff7dd4000-7ffff7dd5000 rw-p 00089000 fd:00 5768603                    /home/logan/cloudseal/reverie/lib/libpreloader.so
7ffff7dd5000-7ffff7dfc000 r-xp 00000000 fd:00 8917655                    /lib/x86_64-linux-gnu/ld-2.27.so
7ffff7ec9000-7ffff7fce000 rw-p 00000000 00:00 0                          
7ffff7fed000-7ffff7ff8000 rw-p 00000000 00:00 0                          
7ffff7ff8000-7ffff7ffb000 r--p 00000000 00:00 0                          [vvar]
7ffff7ffb000-7ffff7ffc000 r-xp 00000000 00:00 0                          [vdso]
7ffff7ffc000-7ffff7ffd000 r--p 00027000 fd:00 8917655                    /lib/x86_64-linux-gnu/ld-2.27.so
7ffff7ffd000-7ffff7ffe000 rw-p 00028000 fd:00 8917655                    /lib/x86_64-linux-gnu/ld-2.27.so
7ffff7ffe000-7ffff7fff000 rw-p 00000000 00:00 0                          
7ffffffde000-7ffffffff000 rw-p 00000000 00:00 0                          [stack]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./threads1 2>/dev/null
[main] launching: ./threads1 []
3371 patched __vdso_clock_gettime@7ffff7ffb960
3371 patched __vdso_gettimeofday@7ffff7ffb8b0
3371 patched __vdso_getcpu@7ffff7ffba20
3371 patched __vdso_time@7ffff7ffb940
3371 patched SYS_mmap@7ffff744ea11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 06, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3371 patched SYS_mprotect@7ffff744eae5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 16, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3372 patched SYS_fstat@7ffff74427c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, c8, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3372 patched SYS_munmap@7ffff744eab5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3372 patched SYS_write@7ffff7443185 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, be, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
thread 0 enter.
thread 3 enter.
3372 patched SYS_futex@7ffff74636d7 [0f, 05, 5a, 5e, c3] => [e8, a4, ba, b9, 00] (callq 7ffff7fff180)
thread 1 enter.
thread 5 enter.
thread 4 enter.
thread 2 enter.
thread 6 enter.
thread 7 enter.
thread 3 exit.
thread 1 exit.
thread 5 exit.
thread 4 exit.
thread 0 exit.
3377 patched SYS_madvise@7ffff744ebb5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 04, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
thread 6 exit.
3376 seccomp syscall SYS_madvise@7ffff744ebb7 restart because it is already patched, rax: ffffffffffffffda
3375 seccomp syscall SYS_madvise@7ffff744ebb7 restart because it is already patched, rax: ffffffffffffffda
thread 7 exit.
3373 seccomp syscall SYS_madvise@7ffff744ebb7 restart because it is already patched, rax: ffffffffffffffda
thread 2 exit.
3371 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./threads2 2>/dev/null
[main] launching: ./threads2 []
3383 patched __vdso_clock_gettime@7ffff7ffb960
3383 patched __vdso_getcpu@7ffff7ffba20
3383 patched __vdso_gettimeofday@7ffff7ffb8b0
3383 patched __vdso_time@7ffff7ffb940
3383 patched SYS_mmap@7ffff744ea11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 06, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3383 patched SYS_mprotect@7ffff744eae5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 16, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3384 patched SYS_write@7ffff77352b5 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, c6, 9d, 8c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
thread 0 enter.
thread 0 exit.
3384 patched SYS_madvise@7ffff744ebb5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 04, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
thread 1 enter.
thread 2 enter.
thread 3 enter.
thread 4 enter.
thread 5 enter.
thread 6 enter.
thread 7 enter.
thread 1 exit.
thread 2 exit.
thread 3 exit.
thread 4 exit.
thread 5 exit.
thread 6 exit.
thread 7 exit.
3383 patched SYS_munmap@7ffff744eab5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
threads data: 7ffff6022700
threads data: 7ffff6022700
threads data: 7ffff5821700
threads data: 7ffff5020700
threads data: 7ffff481f700
threads data: 7fffe7fff700
threads data: 7fffe77fe700
threads data: 7fffe6ffd700
3383 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./threads3 2>/dev/null
[main] launching: ./threads3 []
3395 patched __vdso_time@7ffff7ffb940
3395 patched __vdso_clock_gettime@7ffff7ffb960
3395 patched __vdso_getcpu@7ffff7ffba20
3395 patched __vdso_gettimeofday@7ffff7ffb8b0
3395 patched SYS_getpid@7ffff74188e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3396 patched SYS_set_robust_list@7ffff7729ca1 [0f, 05, c3, 66, 90] => [e8, 5a, 59, 8d, 00] (callq 7ffff7fff600)
3395 patched SYS_getppid@7ffff74188f5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 86, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3396 patched SYS_getpid@7ffff74188e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3395 patched SYS_fstat@7ffff74427c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, c8, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3396 patched SYS_getppid@7ffff74188f5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 86, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3395 patched SYS_write@7ffff7443152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, bf, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
parent pid: 3395, parent: 3394
3396 patched SYS_fstat@7ffff74427c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, c8, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3396 patched SYS_write@7ffff7443152 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 29, bf, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
child pid: 3396, parent: 3395
3395 patched SYS_mmap@7ffff744ea11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 06, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3395 patched SYS_mprotect@7ffff744eae5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 16, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3396 patched SYS_mmap@7ffff744ea11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 06, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3396 patched SYS_mprotect@7ffff744eae5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 16, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3397 patched SYS_write@7ffff7443185 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, be, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
thread 100 enter. allocating with mmap
3398 patched SYS_write@7ffff7443185 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, be, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
thread 0 enter. allocating with mmap
thread 100 exit.
3397 patched SYS_madvise@7ffff744ebb5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 04, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
thread 0 exit.
3398 patched SYS_madvise@7ffff744ebb5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 04, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3399 patched SYS_gettid@7ffff744e837 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, c4, 07, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3400 patched SYS_gettid@7ffff744e837 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, c4, 07, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3401 seccomp syscall SYS_gettid@7ffff744e839 restart because it is already patched, rax: ffffffffffffffda
3399 patched SYS_getpgid@7ffff7418b45 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, b6, 64, be, 00, 0f, 1f, 00] (callq 7ffff7fff000)
self: 7ffff6022700 thread 00101 (tid=3399, pid=3395, ppid=3394, pgid=3393) enter.
3402 seccomp syscall SYS_gettid@7ffff744e839 restart because it is already patched, rax: ffffffffffffffda
3400 patched SYS_getpgid@7ffff7418b45 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, b6, 64, be, 00, 0f, 1f, 00] (callq 7ffff7fff000)
self: 7ffff6022700 thread 00001 (tid=3400, pid=3396, ppid=3395, pgid=3393) enter.
3403 seccomp syscall SYS_getpgid@7ffff7418b47 restart because it is already patched, rax: ffffffffffffffda
3401 seccomp syscall SYS_getpgid@7ffff7418b47 restart because it is already patched, rax: ffffffffffffffda
self: 7ffff5020700 thread 00103 (tid=3403, pid=3395, ppid=3394, pgid=3393) enter.
self: 7ffff5821700 thread 00102 (tid=3401, pid=3395, ppid=3394, pgid=3393) enter.
3404 seccomp syscall SYS_getpgid@7ffff7418b47 restart because it is already patched, rax: ffffffffffffffda
3402 seccomp syscall SYS_getpgid@7ffff7418b47 restart because it is already patched, rax: ffffffffffffffda
self: 7ffff5020700 thread 00003 (tid=3404, pid=3396, ppid=3395, pgid=3393) enter.
self: 7ffff5821700 thread 00002 (tid=3402, pid=3396, ppid=3395, pgid=3393) enter.
self: 7ffff481f700 thread 00104 (tid=3405, pid=3395, ppid=3394, pgid=3393) enter.
3403 patched SYS_futex@7ffff74636d7 [0f, 05, 5a, 5e, c3] => [e8, a4, ba, b9, 00] (callq 7ffff7fff180)
self: 7ffff481f700 thread 00004 (tid=3406, pid=3396, ppid=3395, pgid=3393) enter.
3404 patched SYS_futex@7ffff74636d7 [0f, 05, 5a, 5e, c3] => [e8, a4, ba, b9, 00] (callq 7ffff7fff180)
3405 seccomp syscall SYS_futex@7ffff74636d9 restart because it is already patched, rax: ffffffffffffffda
self: 7ffff6022700 thread 00101 (tid=3399, pid=3395, ppid=3394, pgid=3393) exit.
self: 7ffff6022700 thread 00001 (tid=3400, pid=3396, ppid=3395, pgid=3393) exit.
self: 7ffff5821700 thread 00102 (tid=3401, pid=3395, ppid=3394, pgid=3393) exit.
self: 7ffff5821700 thread 00002 (tid=3402, pid=3396, ppid=3395, pgid=3393) exit.
self: 7ffff5020700 thread 00103 (tid=3403, pid=3395, ppid=3394, pgid=3393) exit.
self: 7ffff481f700 thread 00004 (tid=3406, pid=3396, ppid=3395, pgid=3393) exit.
self: 7ffff481f700 thread 00104 (tid=3405, pid=3395, ppid=3394, pgid=3393) exit.
self: 7ffff5020700 thread 00003 (tid=3404, pid=3396, ppid=3395, pgid=3393) exit.
0 threads data: 7ffff6022700
100 threads data: 7ffff6022700
1 threads data: 7ffff6022700
101 threads data: 7ffff6022700
2 threads data: 7ffff5821700
102 threads data: 7ffff5821700
3 threads data: 7ffff5020700
103 threads data: 7ffff5020700
4 threads data: 7ffff481f700
104 threads data: 7ffff481f700
3395 patched SYS_wait4@7ffff7736238 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 43, 8e, 8c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3396 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3395 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./threads4 2>/dev/null
[main] launching: ./threads4 []
3410 patched __vdso_getcpu@7ffff7ffba20
3410 patched __vdso_gettimeofday@7ffff7ffb8b0
3410 patched __vdso_time@7ffff7ffb940
3410 patched __vdso_clock_gettime@7ffff7ffb960
3410 patched SYS_mmap@7ffff744ea11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 06, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3410 patched SYS_mprotect@7ffff744eae5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 16, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3411 patched SYS_write@7ffff77352b5 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, c6, 9d, 8c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3412 seccomp syscall SYS_write@7ffff77352b7 restart because it is already patched, rax: ffffffffffffffda
3411 patched SYS_madvise@7ffff744ebb5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 04, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3413 seccomp syscall SYS_madvise@7ffff744ebb7 restart because it is already patched, rax: ffffffffffffffda
3410 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
timeout 30s /home/logan/cloudseal/reverie/bin/reverie --tool=/home/logan/cloudseal/reverie/lib/libecho.so --preloader=/home/logan/cloudseal/reverie/lib/libpreloader.so --debug=4 -- ./threads5 2>/dev/null
[main] launching: ./threads5 []
3418 patched __vdso_time@7ffff7ffb940
3418 patched __vdso_getcpu@7ffff7ffba20
3418 patched __vdso_clock_gettime@7ffff7ffb960
3418 patched __vdso_gettimeofday@7ffff7ffb8b0
3418 patched SYS_mmap@7ffff744ea11 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 6a, 06, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3418 patched SYS_mprotect@7ffff744eae5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 16, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3419 patched SYS_getpid@7ffff74188e5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 96, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3420 seccomp syscall SYS_getpid@7ffff74188e7 restart because it is already patched, rax: ffffffffffffffda
3419 patched SYS_gettid@7ffff744e837 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, c4, 07, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3421 seccomp syscall SYS_gettid@7ffff744e839 restart because it is already patched, rax: ffffffffffffffda
3420 seccomp syscall SYS_gettid@7ffff744e839 restart because it is already patched, rax: ffffffffffffffda
3419 patched SYS_clock_gettime@7ffff7ffb965 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 16, 3b, 00, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
3422 seccomp syscall SYS_clock_gettime@7ffff7ffb967 restart because it is already patched, rax: ffffffffffffffda
3421 seccomp syscall SYS_clock_gettime@7ffff7ffb967 restart because it is already patched, rax: ffffffffffffffda
3420 seccomp syscall SYS_clock_gettime@7ffff7ffb967 restart because it is already patched, rax: ffffffffffffffda
3419 patched SYS_fstat@7ffff74427c1 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, ba, c8, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3419 patched SYS_munmap@7ffff744eab5 [0f, 05, 48, 3d, 01, f0, ff, ff] => [e8, 46, 05, bb, 00, 0f, 1f, 00] (callq 7ffff7fff000)
3419 patched SYS_write@7ffff7443185 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, f6, be, bb, 00, 0f, 1f, 00] (callq 7ffff7fff080)
1566495656.048656|thread 0 enter. pid=3418, tid=3419
1566495656.050657|thread 7 enter. pid=3418, tid=3426
1566495656.050197|thread 6 enter. pid=3418, tid=3425
3419 patched SYS_futex@7ffff74636d7 [0f, 05, 5a, 5e, c3] => [e8, a4, ba, b9, 00] (callq 7ffff7fff180)
1566495656.048845|thread 4 enter. pid=3418, tid=3423
1566495656.050987|thread# 0 reporting pid: 3418, tid: 3419
1566495656.048898|thread 3 enter. pid=3418, tid=3422
1566495656.051090|thread# 4 reporting pid: 3418, tid: 3423
1566495656.048982|thread 2 enter. pid=3418, tid=3421
1566495656.049044|thread 1 enter. pid=3418, tid=3420
1566495656.051377|thread# 3 reporting pid: 3418, tid: 3422
1566495656.051454|thread# 1 reporting pid: 3418, tid: 3420
3425 seccomp syscall SYS_futex@7ffff74636d9 restart because it is already patched, rax: ffffffffffffffda
1566495656.050782|thread# 7 reporting pid: 3418, tid: 3426
1566495656.049406|thread 5 enter. pid=3418, tid=3424
3423 patched SYS_nanosleep@7ffff7735c5e [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 1d, 94, 8c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
1566495656.051784|thread# 6 reporting pid: 3418, tid: 3425
3422 seccomp syscall SYS_nanosleep@7ffff7735c60 restart because it is already patched, rax: ffffffffffffffda
1566495656.051325|thread# 2 reporting pid: 3418, tid: 3421
3420 seccomp syscall SYS_nanosleep@7ffff7735c60 restart because it is already patched, rax: ffffffffffffffda
3419 seccomp syscall SYS_nanosleep@7ffff7735c60 restart because it is already patched, rax: ffffffffffffffda
3426 seccomp syscall SYS_nanosleep@7ffff7735c60 restart because it is already patched, rax: ffffffffffffffda
3424 seccomp syscall SYS_nanosleep@7ffff7735c60 restart because it is already patched, rax: ffffffffffffffda
1566495656.552225|thread# 4 reporting pid: 3418, tid: 3423
1566495656.552239|thread# 6 reporting pid: 3418, tid: 3425
1566495656.552459|thread# 2 reporting pid: 3418, tid: 3421
1566495656.552527|thread# 0 reporting pid: 3418, tid: 3419
1566495656.552619|thread# 7 reporting pid: 3418, tid: 3426
1566495656.552290|thread# 3 reporting pid: 3418, tid: 3422
1566495656.552493|thread# 1 reporting pid: 3418, tid: 3420
1566495657.052585|thread# 4 reporting pid: 3418, tid: 3423
1566495657.052734|thread# 0 reporting pid: 3418, tid: 3419
1566495657.052763|thread# 2 reporting pid: 3418, tid: 3421
1566495657.052851|thread# 7 reporting pid: 3418, tid: 3426
1566495657.052943|thread# 6 reporting pid: 3418, tid: 3425
1566495657.053012|thread# 3 reporting pid: 3418, tid: 3422
1566495657.053099|thread# 1 reporting pid: 3418, tid: 3420
1566495657.552821|thread# 4 reporting pid: 3418, tid: 3423
1566495657.552934|thread# 0 reporting pid: 3418, tid: 3419
1566495657.553033|thread# 2 reporting pid: 3418, tid: 3421
1566495657.553168|thread# 6 reporting pid: 3418, tid: 3425
1566495657.553051|thread# 7 reporting pid: 3418, tid: 3426
1566495657.553375|thread# 3 reporting pid: 3418, tid: 3422
1566495657.553531|thread# 1 reporting pid: 3418, tid: 3420
1566495658.052697|thread 5 call fork.
1566495658.052818|pthread_atfork prepare.
1566495658.053343|thread# 4 reporting pid: 3418, tid: 3423
1566495658.053519|thread# 7 reporting pid: 3418, tid: 3426
1566495658.053673|thread# 3 reporting pid: 3418, tid: 3422
1566495658.053773|thread# 1 reporting pid: 3418, tid: 3420
1566495658.053342|thread# 0 reporting pid: 3418, tid: 3419
3424 patched SYS_getppid@7ffff74188f5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 86, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
1566495658.054216|pthread_atfork parent pid = 3418, ppid = 3417, tid = 3424.
3427 patched SYS_set_robust_list@7ffff7729ca1 [0f, 05, c3, 66, 90] => [e8, 5a, 59, 8d, 00] (callq 7ffff7fff600)
1566495658.054340|after fork, I'm parent pid = 3418, child pid = 3427, tid = 3424
1566495658.053373|thread# 2 reporting pid: 3418, tid: 3421
1566495658.053521|thread# 6 reporting pid: 3418, tid: 3425
3424 patched SYS_wait4@7ffff7736238 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 43, 8e, 8c, 00, 0f, 1f, 00] (callq 7ffff7fff080)
3427 patched SYS_getppid@7ffff74188f5 [0f, 05, c3, 0f, 1f, 84, 00, 00, 00, 00, 00] => [e8, 86, 6b, be, 00, 66, 0f, 1f, 44, 00, 00] (callq 7ffff7fff480)
1566495658.055037|pthread_atfork child pid = 3427, ppid = 3418, tid = 3427.
1566495658.055196|after fork, I'm child pid = 3427, parent = 3418, tid = 3427
1566495658.553721|thread# 4 reporting pid: 3418, tid: 3423
1566495658.553787|thread# 7 reporting pid: 3418, tid: 3426
1566495658.555441|child pid = 3427 exit
1566495658.555579|thread 5 exit. pid=3427, tid=3427
3427 patched SYS_exit_group@7ffff7417e04 [0f, 05, 48, 3d, 00, f0, ff, ff] => [e8, 77, 72, be, 00, 0f, 1f, 00] (callq 7ffff7fff080)
Makefile:111: recipe for target 'tests' failed
make[1]: *** [tests] Error 134
make[1]: Leaving directory '/home/logan/cloudseal/reverie/tests'
Makefile:38: recipe for target 'tests' failed
make: *** [tests] Error 2

Copy link
Collaborator

@wangbj wangbj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More consistent naming for sub crates.

Thanks for submitting the PR, the naming (before the PR) was poor, compare to create like: https://github.com/rust-lang-nursery/futures-rs. Can you help converting the sub crate naming more consistent names?

Also there's a lot of exported (pub) symbols in ffi.rs, are they necessary?

}

#[no_mangle]
unsafe extern "C" fn syscall_hook_trampoline() {
pub unsafe extern "C" fn syscall_hook_trampoline() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lots of functions are changed to pub, are they necessary?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought they would be, since ffi.rs was essentially being hidden inside a new crate rather than being copied in as a source file. However, I have to admit I don't fully understand exactly how all of these trampoline functions are being used.

I just tried taking out all the extra pubs, built the project again, and ran cargo test. Didn't see any errors. Also ran the tool with fingerprinter, and saw expected output there as well. So as far as I can tell, these pubs are not necessary.

I just pushed a new commit to address this.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, these wrappers existed just to make sure the _trampoline* symbols didn't get stripped away during linking stage. without the wrappers the linker would have thought nobody needs them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problem. I'll go ahead and reorganize the sub-crates similar to futures-rs as well.

@loganwendholt
Copy link
Contributor Author

@wangbj does this latest commit achieve what you were looking for in terms of a more consistent naming scheme?

@wangbj
Copy link
Collaborator

wangbj commented Aug 27, 2019

@wangbj does this latest commit achieve what you were looking for in terms of a more consistent naming scheme?

Is it possible to keep syscalls/sysnum as the same, reverie_tools_helper => reverie_helper? What do you think? Sorry naming is really a hard problem :)

@loganwendholt
Copy link
Contributor Author

reverie_tools_helper => reverie_helper seems fine. So you're suggesting to go from reverie-syscalls back to syscalls, and reverie-sysnum back to sysnum, correct?

@wangbj
Copy link
Collaborator

wangbj commented Aug 27, 2019

yes, that's correct.

@loganwendholt
Copy link
Contributor Author

I think those changes all sound fine, so I went ahead and implemented them. How does this new commit look?

@wangbj wangbj merged commit 70be695 into reverie-rs:master Aug 27, 2019
@wangbj
Copy link
Collaborator

wangbj commented Aug 27, 2019

Thanks a lot!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants