smartnic / superopt

A superoptimizing compiler for packet-processing
MIT License
30 stars 3 forks source link

Failure on startup (z3server connection failure and illegal original program) #105

Closed SeanHeelan closed 2 years ago

SeanHeelan commented 2 years ago

When starting the most recent version (9473e4718d491f6cb375a9754c6213ddf5db680c) of the tool I get the following error:

./main_ebpf.out --bm 2 --logger_level 1
niter:10
k:1
meas_mode:0
path_out:output/
bm:2
bm_from_file: 0, bytecode: , map: , desc: 
w_e:1
w_p:0
st_ex:0
st_eq:0
st_avg:0
st_when_to_restart:0
st_when_to_restart_niter:0
st_start_prog:0
restart_w_e_list:1 
restart_w_p_list:0 
reset_win_niter:10
win list: 
p_inst_operand:0.25
p_inst:0.25
p_inst_as_nop:0.25
server_port:8002
disable_prog_eq_cache:0
enable_prog_uneq_cache:0
is_win:0
logger_level: 1
sample_neg_imms: 
sample_pos_imms: 
sample_neg_offs: 
sample_pos_offs: 
# unimplemented opcodes: 0  
# helper calls: 2
# mem_acc multi_values: 0
# mem_acc num_symbolic: 0
# multi_insns: 4
# jmp: 1
# ret: 1
windows length and frequency: 3:2 
# winodws:2 # insns: 6
[top_k_progs] set k = 1
run_mh_sampler...
set_win_lists: [0, 15] 
set window max_num_iter as 10
set strategy MH_SAMPLER_ST_WHEN_TO_RESTART_NO_RESTART
set strategy MH_SAMPLER_ST_NEXT_START_PROG_ORIG
set w_e and w_p pairs as: 1,0 
window start and end set as [0, 15]
probabilities of mod_random_inst_operand, mod_random_inst, mod_random_k_cont_insts are all set as 0.25
set strategy MH_SAMPLER_ST_WHEN_TO_RESTART_NO_RESTART
set strategy MH_SAMPLER_ST_NEXT_START_PROG_ORIG
set w_e and w_p pairs as: 1,0 
probabilities of mod_random_inst_operand, mod_random_inst, mod_random_inst_as_nop and mod_random_k_cont_insts are set as 0.25, 0.25, 0.25, 0.25
set_win_lists: [0, 2] [10, 12] 
set window max_num_iter as 10
0: STXB 10 -2 1
1: MOV64XC 1 1
2: STXB 10 -1 1
3: LDMAPID 1 0
4: MOV64XY 2 10
5: ADD64XC 2 -1
6: CALL 1
7: JEQXC 0 0 7
8: LDMAPID 1 0
9: MOV64XY 2 10
10: ADD64XC 2 -1
11: MOV64XY 3 10
12: ADD64XC 3 -2
13: CALL 2
14: MOV64XC 0 0
15: EXIT

Spawining Server with port: 8002
Spawining Server with port: 8003
z3client: connect() to z3server failed: Connection refused
z3client: connect() to z3server failed: Connection refused
z3 solver client received unexpected output: ''
win0 vld solve safety: 4.00134e+06 us -1
ERROR: the original program is illegal. original program is unsafe
terminate called after throwing an instance of 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >'
Aborted

There appear to be two errors encountered, related to a connection to a z3 server and some issue with the benchmark. Any ideas what could be going wrong?

In case it matters I am running on Debian 10 and a 4.19 kernel.

SeanHeelan commented 2 years ago

Closing this issue as I found the https://github.com/smartnic/sigcomm21_artifact repo which demonstrates how to correctly build and run the tool.