From 98b2b23d2c1ab9784bd9501ab77bb3aea1983599 Mon Sep 17 00:00:00 2001 From: weiyu Date: Mon, 10 Jun 2019 11:06:47 -0700 Subject: [PATCH] add subdirectory for tests --- libcdsTest/ms-queue/.intrusive_msqueue_hp.cc | 125 ++++++++++ libcdsTest/ms-queue/Makefile | 15 ++ libcdsTest/ms-queue/intrusive_msqueue_hp.cc | 174 +++++++++++++ libcdsTest/ms-queue/msqueue | Bin 0 -> 107216 bytes libcdsTest/ms-queue/msqueue2 | Bin 0 -> 249272 bytes libcdsTest/ms-queue/other | Bin 0 -> 87672 bytes libcdsTest/ms-queue/script.sh | 3 + libcdsTest/ms-queue/test_intrusive_msqueue.h | 60 +++++ libcdsTest/ms-queue/tmp | 242 +++++++++++++++++++ pthread_test/CDSPass/addr-satcycle.cc | Bin 0 -> 13888 bytes pthread_test/CDSPass/bug1.cc | Bin 0 -> 13536 bytes pthread_test/CDSPass/compile.sh | 18 ++ pthread_test/CDSPass/condvar.cc | Bin 0 -> 13704 bytes pthread_test/CDSPass/deadlock.cc | Bin 0 -> 13208 bytes pthread_test/CDSPass/insanesync.cc | Bin 0 -> 14152 bytes pthread_test/CDSPass/iriw.cc | Bin 0 -> 14064 bytes pthread_test/CDSPass/iriw_wildcard.cc | Bin 0 -> 13992 bytes pthread_test/CDSPass/mo-satcycle.cc | Bin 0 -> 13960 bytes pthread_test/CDSPass/mutex_test.cc | Bin 0 -> 13888 bytes pthread_test/CDSPass/pthread_mutex_test.cc | Bin 0 -> 13768 bytes pthread_test/CDSPass/uninit | Bin 0 -> 21872 bytes pthread_test/CDSPass/uninit.cc | Bin 0 -> 21872 bytes pthread_test/addr-satcycle.cc | 69 ++++++ pthread_test/bug1.cc | 74 ++++++ pthread_test/condvar.cc | 44 ++++ pthread_test/deadlock.cc | 47 ++++ pthread_test/insanesync.cc | 72 ++++++ pthread_test/iriw.cc | 71 ++++++ pthread_test/iriw_wildcard.cc | 70 ++++++ pthread_test/mo-satcycle.cc | 71 ++++++ pthread_test/normal_compile.sh | 9 + pthread_test/protect/mutex_test.cc | 41 ++++ pthread_test/pthread_mutex_test.cc | 69 ++++++ pthread_test/test.cc | 73 ++++++ pthread_test/uninit.cc | 57 +++++ 35 files changed, 1404 insertions(+) create mode 100644 libcdsTest/ms-queue/.intrusive_msqueue_hp.cc create mode 100644 libcdsTest/ms-queue/Makefile create mode 100644 libcdsTest/ms-queue/intrusive_msqueue_hp.cc create mode 100755 libcdsTest/ms-queue/msqueue create mode 100755 libcdsTest/ms-queue/msqueue2 create mode 100755 libcdsTest/ms-queue/other create mode 100755 libcdsTest/ms-queue/script.sh create mode 100644 libcdsTest/ms-queue/test_intrusive_msqueue.h create mode 100644 libcdsTest/ms-queue/tmp create mode 100755 pthread_test/CDSPass/addr-satcycle.cc create mode 100755 pthread_test/CDSPass/bug1.cc create mode 100755 pthread_test/CDSPass/compile.sh create mode 100755 pthread_test/CDSPass/condvar.cc create mode 100755 pthread_test/CDSPass/deadlock.cc create mode 100755 pthread_test/CDSPass/insanesync.cc create mode 100755 pthread_test/CDSPass/iriw.cc create mode 100755 pthread_test/CDSPass/iriw_wildcard.cc create mode 100755 pthread_test/CDSPass/mo-satcycle.cc create mode 100755 pthread_test/CDSPass/mutex_test.cc create mode 100755 pthread_test/CDSPass/pthread_mutex_test.cc create mode 100755 pthread_test/CDSPass/uninit create mode 100755 pthread_test/CDSPass/uninit.cc create mode 100644 pthread_test/addr-satcycle.cc create mode 100644 pthread_test/bug1.cc create mode 100644 pthread_test/condvar.cc create mode 100644 pthread_test/deadlock.cc create mode 100644 pthread_test/insanesync.cc create mode 100644 pthread_test/iriw.cc create mode 100644 pthread_test/iriw_wildcard.cc create mode 100644 pthread_test/mo-satcycle.cc create mode 100755 pthread_test/normal_compile.sh create mode 100644 pthread_test/protect/mutex_test.cc create mode 100644 pthread_test/pthread_mutex_test.cc create mode 100644 pthread_test/test.cc create mode 100644 pthread_test/uninit.cc diff --git a/libcdsTest/ms-queue/.intrusive_msqueue_hp.cc b/libcdsTest/ms-queue/.intrusive_msqueue_hp.cc new file mode 100644 index 00000000..877f5450 --- /dev/null +++ b/libcdsTest/ms-queue/.intrusive_msqueue_hp.cc @@ -0,0 +1,125 @@ +#include "test_intrusive_msqueue.h" + +#include +#include +#include +#include +#include + +namespace ci = cds::intrusive; +typedef cds::gc::HP gc_type; + +typedef cds_test::intrusive_msqueue base_class; +typedef typename base_class::base_hook_item< ci::msqueue::node> base_item_type; +typedef typename base_class::member_hook_item< ci::msqueue::node> member_item_type; + +typedef cds_test::intrusive_msqueue::mock_disposer mock_disposer; + +template +void test( Queue& q, Data& arr ) +{ + typedef typename Queue::value_type value_type; + size_t nSize = arr.size(); + + value_type * pv; + for ( size_t i = 0; i < nSize; ++i ) + arr[i].nVal = static_cast(i); + + assert(q.empty()); + assert(q.size() == 0); + + // pop from empty queue + pv = q.pop(); + assert( pv == nullptr ); + assert( q.empty()); + assert(q.size() == 0); + + pv =q.dequeue(); + assert( pv == nullptr ); + assert( q.empty()); + assert(q.size() == 0); + + // push/pop test + for ( size_t i = 0; i < nSize; ++i ) { + if ( i & 1 ) + q.push( arr[i] ); + else + q.enqueue( arr[i] ); + assert( !q.empty()); + assert(q.size() == i+1); + } + + for ( size_t i = 0; i < nSize; ++i ) { + assert( !q.empty()); + assert( q.size() == nSize - i ); + if ( i & 1 ) + pv = q.pop(); + else + pv = q.dequeue(); + assert( pv != nullptr ); + assert( pv->nVal == i); + } + assert( q.empty()); + assert( q.size() == 0 ); + + Queue::gc::scan(); + --nSize; // last element of array is in queue yet as a dummy item + for ( size_t i = 0; i < nSize; ++i ) { + assert( arr[i].nDisposeCount == 1 ); + } + assert( arr[nSize].nDisposeCount == 0 ); + + // clear test + for ( size_t i = 0; i < nSize; ++i ) + q.push( arr[i] ); + + assert( !q.empty()); + assert( q.size() == nSize ); + + q.clear(); + assert( q.empty()); + assert( q.size() == 0 ); + + Queue::gc::scan(); + for ( size_t i = 0; i < nSize - 1; ++i ) { + printf("nDisCount (2): %d, (i) %lu\n", arr[i].nDisposeCount, i ); + } + printf("nDisCount: (1) %d\n", arr[nSize - 1].nDisposeCount ); // this element is in the queue yet + assert( arr[nSize].nDisposeCount == 1 ); +} + +int main () { + cds::Initialize(); + + { + typedef ci::MSQueue< gc_type, base_item_type > queue_type; + cds::gc::hp::GarbageCollector::Construct( queue_type::c_nHazardPtrCount, 1, 16 ); + cds::threading::Manager::attachThread(); + + { + typedef cds::intrusive::MSQueue< gc_type, base_item_type, + typename ci::msqueue::make_traits< + ci::opt::disposer< mock_disposer > + , cds::opt::item_counter< cds::atomicity::item_counter > + , ci::opt::hook< ci::msqueue::base_hook< ci::opt::gc>> + >::type + > test_queue; + + std::vector arr; + arr.resize(5); + printf("test start\n"); + { + test_queue q; + test(q, arr); + } + printf("test end\n"); + +// gc_type::scan(); +// check_array( arr ); + + } + + } + + cds::Terminate(); +} diff --git a/libcdsTest/ms-queue/Makefile b/libcdsTest/ms-queue/Makefile new file mode 100644 index 00000000..8df2ca5f --- /dev/null +++ b/libcdsTest/ms-queue/Makefile @@ -0,0 +1,15 @@ +all: intrusive_msqueue_hp.o + +#%.o : %.cc +# $(CXX) -c $@ + +CFLAGS=-I. -I /scratch/benchmarks/libcds -std=c++11 + +CDSDIR=/scratch/benchmarks/libcds/build-release/bin +CDSLIB=-lcds_d -lpthread + +intrusive_msqueue_hp.o: intrusive_msqueue_hp.cc + $(CXX) -o msqueue intrusive_msqueue_hp.cc $(CFLAGS) -L $(CDSDIR) $(CDSLIB) + +clean: + rm -f *.o diff --git a/libcdsTest/ms-queue/intrusive_msqueue_hp.cc b/libcdsTest/ms-queue/intrusive_msqueue_hp.cc new file mode 100644 index 00000000..176ba500 --- /dev/null +++ b/libcdsTest/ms-queue/intrusive_msqueue_hp.cc @@ -0,0 +1,174 @@ +#include "test_intrusive_msqueue.h" + +#include +#include +#include +#include +#include + +#define NDEBUG // disable assert() +#include +#include + +namespace ci = cds::intrusive; +typedef cds::gc::HP gc_type; + +typedef cds_test::intrusive_msqueue base_class; +typedef typename base_class::base_hook_item< ci::msqueue::node> base_item_type; +typedef typename base_class::member_hook_item< ci::msqueue::node> member_item_type; + +typedef cds_test::intrusive_msqueue::mock_disposer mock_disposer; + +template +void test_enqueue( Queue& q, Data& arr ) +{ + typedef typename Queue::value_type value_type; + size_t nSize = arr.size(); + + value_type * pv; + for ( size_t i = 0; i < nSize; ++i ) + arr[i].nVal = static_cast(i); + + assert(q.empty()); + assert(q.size() == 0); + + // pop from empty queue +// pv = q.pop(); + assert( pv == nullptr ); + assert( q.empty()); + assert(q.size() == 0); + +// pv = q.dequeue(); + assert( pv == nullptr ); + assert( q.empty()); + assert(q.size() == 0); + + for ( size_t i = 0; i < nSize; ++i ) { + if ( i & 1 ) + q.push( arr[i] ); + else + q.enqueue( arr[i] ); + assert( !q.empty()); + assert(q.size() == i+1); + } +} + + +template +void test_dequeue( Queue& q, Data& arr ) +{ + typedef typename Queue::value_type value_type; + size_t nSize = arr.size(); + + value_type * pv; +/* + for ( size_t i = 0; i < nSize; ++i ) + arr[i].nVal = static_cast(i); + + assert(q.empty()); + assert(q.size() == 0); + + // pop from empty queue + pv = q.pop(); + assert( pv == nullptr ); + assert( q.empty()); + assert(q.size() == 0); + + pv = q.dequeue(); + assert( pv == nullptr ); + assert( q.empty()); + assert(q.size() == 0); + + // push/pop test + for ( size_t i = 0; i < nSize; ++i ) { + if ( i & 1 ) + q.push( arr[i] ); + else + q.enqueue( arr[i] ); + assert( !q.empty()); + assert(q.size() == i+1); + } +*/ + + for ( size_t i = 0; i < nSize; ++i ) { + assert( !q.empty()); + assert( q.size() == nSize - i ); + if ( i & 1 ) + pv = q.pop(); + else + pv = q.dequeue(); + assert( pv != nullptr ); + assert( pv->nVal == i); + } + assert( q.empty()); + assert( q.size() == 0 ); + +/* + Queue::gc::scan(); + --nSize; // last element of array is in queue yet as a dummy item + for ( size_t i = 0; i < nSize; ++i ) { + assert( arr[i].nDisposeCount == 1 ); + } + assert( arr[nSize].nDisposeCount == 0 ); + + // clear test + for ( size_t i = 0; i < nSize; ++i ) + q.push( arr[i] ); + + assert( !q.empty()); + assert( q.size() == nSize ); + + q.clear(); + assert( q.empty()); + assert( q.size() == 0 ); + + Queue::gc::scan(); + for ( size_t i = 0; i < nSize - 1; ++i ) { + printf("nDisCount (2): %d, (i) %lu\n", arr[i].nDisposeCount, i ); + } + printf("nDisCount: (1) %d\n", arr[nSize - 1].nDisposeCount ); // this element is in the queue yet + assert( arr[nSize].nDisposeCount == 1 ); +*/ + +} + +int main () { + cds::Initialize(); + + { + typedef ci::MSQueue< gc_type, base_item_type > queue_type; + cds::gc::hp::GarbageCollector::Construct( queue_type::c_nHazardPtrCount, 1, 16 ); + cds::threading::Manager::attachThread(); + + { + typedef cds::intrusive::MSQueue< gc_type, base_item_type, + typename ci::msqueue::make_traits< + ci::opt::disposer< mock_disposer > + , cds::opt::item_counter< cds::atomicity::item_counter > + , ci::opt::hook< ci::msqueue::base_hook< ci::opt::gc>> + >::type + > test_queue; + + std::vector arr; + arr.resize(5); + printf("test start\n"); + { + std::atomic x; + atomic_store_explicit(&x, 0xaaa, std::memory_order_seq_cst); + test_queue q; + test_enqueue(q, arr); + atomic_store_explicit(&x, 0xccc, std::memory_order_seq_cst); + test_dequeue(q, arr); + atomic_store_explicit(&x, 0xbbb, std::memory_order_seq_cst); + } + printf("test end\n"); + +// gc_type::scan(); +// check_array( arr ); + + } + + } + + cds::Terminate(); +} diff --git a/libcdsTest/ms-queue/msqueue b/libcdsTest/ms-queue/msqueue new file mode 100755 index 0000000000000000000000000000000000000000..ebafe1e48d98381813fa1719aa82e7d694dc9e4c GIT binary patch literal 107216 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�ecHj#(GkftBY5odrWjIW$c3J+(bTE@&++xtw z!(QOgBEs%{`Ss;2P*^SW>kE;K2Q*(_Lk_I3?;OPfx`y8*iD3HsE$nQ+C_7RBEM51w-hWe z`;CMrBH9kyRi21zLw>YgKbOl^5oSmwo!F@_0ex2AbdGzTpNJRY?OW)vVQ$a!I^9_M zvNoBg$?x~_KIc=xPd6uSPDsa^is@yJ9l{)2WNA6|Ur<8(h$DQo0#3`R z4%gzl9N5u`9s`U|+B>BMI0zN5*XP&G)%FPJ5%}kPMkh9t8vgmU%c?Nyn-{8YsG*(Y zd3pYf@o5ypoN_VUbupQI%sqclRSPD2f(Nnf#3d(U?yNsm!`-jpf3r{KPKIN}c7K0K zotlIUN5o8wxsp$(N2q3=8K|xZyWOGcs+y|WK(s1ci)cC+j+CoNT%7BqAJ%V+#K+^) z3hEt$`fk5tU``jzDK_6MII%G@zIPMnMFkvn1dg^3;b5%8pT^<2g-MRNg~=pA0dm?m z4*$RIt|ml^BMO(3n3xE<9s-+0l3`s5f;KZ6VZ4>Hf>8*27(CiD&i3w1GJnkW2KD42 z7ZD^v4x2+DkW&O%z2z3Kx$SYqi#NR+!XCu+d-dL%si~P3B_28!RKKcv@2gi`HPut~ zx~l6`Jh5;%&RQNgGRrT-6*W{kGe$Y<@S$w`XSvZ%Fk_>mTUVzTZ2o79Q8DsPjaaZStXE)!4Tm(Z8o{7{b3l>>F>%r2cig2a_$;)3g(m zM4lE0eecP%u-$(Y{+v!k$2>06)W zL6U@%#*B5f3#D;EHPXpzpWJqf{H=p{BU6NL?wNcT;}Ms!m_GAq%MHcT&Ai%5(Pr<+ z*(dF@bn*#}uk-qK+x$J;!cPM8|9E-YVa#j(5ro5@aFSkT$IGq3e>}1o?YSoxkP}S4#U^U^D92|8E)%<$RN%ezDR-t5-W|{W54eVA|9W z8Yda_P1NnBNp$+mH^eS~1N(nB;&uHfosN0t^ptv*E_8SaJ`fiBE@Boy;>&1{f_Ubb?K?#=Ur@c z3GoYH{kyZ%Q~m1&>x9=OLFsOnYRn#?O1?#4FTCPQyRBoD1n?U%;XZ(;dsqA{CBj{V ze-B>qn==+MV>V|TG1m?-)oWOPm%!NZ%71>&I??lUj+kvGM$4~ylztEX3lD$pkadW2 z)G%6+i{ymhSEc}Gl93at7SulN5W#0YVxDq@79DmGW@-9Y_k2HfUzH5@mqr5y8C+gXAq+zD*mzH zAHOD^`ZxXd75`N5PX#|C4Xgb_>ra12>w*65jT%yn+1_v@^ZqrTT`0U?esizJz z`d6INj{|)FKI8lJ!-CUta%{5xXMm@?^!~34{<`27sc@bvdSMEFBKk`~y5dg;>6)F= z1K_J}Uv%RamiR&ig&9Q0e!D*YPbvS_SDgAK$OU+pF literal 0 HcmV?d00001 diff --git a/libcdsTest/ms-queue/msqueue2 b/libcdsTest/ms-queue/msqueue2 new file mode 100755 index 0000000000000000000000000000000000000000..ded5d2a08fc7fb1d73d17b1e588bf6f8d9945568 GIT binary patch literal 249272 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 z zG>{TisWfDs&~)-`H!uBYP}f5XK<0r=r(Uv!k?f0gfk7zpOYPF2^Z7a{{>vEuOvNv^ zOVQK&w@7F=&u1#_p^`wDWi}Yf%~O}o%hL4$4L8MU9 zYk@v~6wTZ1cT`!Xe)GJevklJYq=&-j`6X_C*lktnb}m)bLq79Fqw_bYY?&T9>UIl; z>fMf^$nkbti#gB3WAqN zn2)eK+8@4kb{v{u!4y)1mrQvH<3`}b7O3zOTLjWg-I-@79ek+9jiD=)1gqValM}Yh z1C`DTVCb6uq8ko==sa)^hS}qtmvFw*v&~z-PAat0$Fyj0fCYlG|P^HX9Zl0@jE=Eb^r8}#R)||U> zBS!yX4CsO5;Uk(&PO0j7h@n5Qfdav!!5R!Mt5D5O+9OJBE2uTk zRXS~LH#_}dH@zlN1m;OfXA3km9xluyl}?H6_QP<|0XZm~>_!?EM8g4tQ>l5*()k%h zz^SyQ>B>ZNhUzBw2G9V|lsM+kN8ID9-QqedL(Wy69}CurhV?73rh@f2qv#l*%MAJ| z(Bkwum8)Su%%?w`9mo|r++dDU?3J!rH_(xNM*eGY^O1ndmP6!_L3TktF(!|@Gw8g# z?kGCCa|4E&$#VnkC_#(n(;&`I(3P3~J!=`AWGq%gDm!GF8PPfa5=;ZqA5jj|pn2ZX zxeErdwpbCYcmB9;F7oT#i-GKTC`+L}T{aXsV3aZU%@U(!YhdphY-0*50P8bO+s9!< ztaCf)mcbG%7^WTi96H*OkCSs@ov#KA#}DAhPgs%iH`wdIdYJO3Z|e=R6-%WP(dCCj zZ7*oo6V-6=TyJ=;g^$@>;bkDx@2!!Je*<#cVjLPnsoTEV4F$(ywhEpHatYM2Gjc8t-4S$N z<+3W(xfgm*44#5TF4i|#52c2-1)Ueyph&QWc_5|Qb)v58&L9XM+0gU(ZHK4e2V0KFw*bZ_Wkx8t{NtHExYaqyue_!qbEpIE}x z!Oy{>fTKizsO<|^sKeNyL$~Y`Akd@E4PewhHuwiD2RS&8 za|3hK%5?;b+6euOqAp@JGndWKp!5tYZQd|#g=RFt8Vo4lY+ldR0ob`fKz%r0R!@cz z=hBQ)48;^yzvxt;G4P8dc|928pzKcj#oK z;V;vwozc2^3e>^pe!0#Xg4(Hf4x{<+ca6t_h+03Q5?DKtEXU2BI6h^>LMXyz0tV=jK`&aBb_=A z%`Jomb^^*H4^qx#w6{=uROBOE#0G*67nsiKdbic3AfmORS-9C(K?tkk;9@tpEpUPv zHfE02UcZPgRDh1s2~6X(3o`K-;nM0Douxy_Qrq-h=zb-xTM|eyP1rnx>Rc*=!%_6j z$!?mipOMf|Fji~8x7*x|^e4E$b+fT#=kUah2CHg2s)`*Dj~!AmN4=Rw?p9P+4hpjc zIMRGge7#}#4z8tP{FMQpL)rBPQBy&k+K5u=0fQVtAz~^iL4MF2F?#sMQS&sa^8pk~ z-^oQcOt0tGFa<7mor-}6n*cNbUpqA4-*K))lkLP+S}~aVHRzcq!-e&wx;(a~af#$x zd`TlU=x4B(RPL(t3Y1g>kyE zP=$HS)%hZ-51%c{*))vcBRA#7%tge780!h0}@CmCi)fQ*yLk2uUD2*_eyUM6~z#ACuso__>p z7?K~)!6Y~df%iZ6p7U*WzuHvlE|V@>eZKE}cR6=I_uO;NMH1s6ZyzT?drmQDjeQw; zU>g9Y4lLwln?CE6QOr_fzldIWBX$%ttYe?t@T3~l{{^EKqx$zSs^gm`5c4y!-+E~C z_hMhgh{nTJc$k-m1N3kV7#h)=XE$E zv;G^=y=gVUHvckVPbikypvFFdLO_7CwDGFVJHS4@{fXG4mu@GBVIBK-mp;64^ifJK z_7`t|a^u$6FJrm9Y}4PNyjNf?zwBEZUPhyv5){+a*k7Yrw_N_c4KI{0Vuu=g7GF?b zzk!lGyzy$1I~?3N0NQSb5CzLJ-o`dRq8No&Y})+j#(h{Hume-#q5Hrc9E<(v9rJjN zJ%Wz^GKe#--So(&*bm=<6>d}Py};dyv|f%l7%Wr)*Byxcy^iqySbgIdeWcXDoxBVa z*0q~HyD9d)cN|0W#y%9ob`LaN_ax9?#oiTYl>Vbg^Lpg772D`5VmUAk?|tVnjK$c; z@ZpM0^I$`++4LC{LyIb2LW?l5J}3@-Ke+L-gBxBfwIHUfu}|vR{tasJxq_;b`|qnz zi(cAzFm3UP2#>|3Wl5839& zvFgA6;f>qo@eW}D-nUcbp=}S)hU|s|*h-O94^@%C!o3x9)b*Q=t7iNQunlO&e~%Qd z*l_bpHeUO_jjwnLfgeVQ9SBLSG^clLM6(#P#(o;4pkzy%V&6XvqTheX!<#k?Ln5+a z;u>%^$clJIG{Br@t*97c!5aH2%8NyKV!f(%qE~ucH03VVsEef z+?|q*1VrmHp%g1#|`qDV@La(rR~Br!LEv-!D)Fj8aR!5sK>x(RfsMQH_cO7x4{gAy|1%pm&(mX$9=GEOug`3(6KXbqa=)pE z?Fd9k5Ty9O5QubuqQ9Au>4E}OS?nQ5z@Ni<@R#r0?oBje zVjBBb=zDJKP`im)Y3vdImwosm2Bfhav{&VwI<2;1GaCC5qCishD$J9Z8-2@<*o($U z#^Gj1T~BO8V;|V8WEbAZ5lhk7dG6>NU$NofHHx{u0U~?M9Irwy*JIjs`?8|{t=yOY z0Sn1HF_`Djx9(@gfyS!Xe#VGR)HB5gXnK3r(lfuf+Ov1du&z;3YN}~5tBn04YT`YYpsMpI z%N$oVbqukGjQvkE`@rR!?^Kob%NsTy6DipD-;NWH_d^KwN>oJbFO(3>o0kUWxGg`f zy8s0Df3@=D#@k~5_63m2qX%qtyjlE=1SSDyoT`=6%P%vX^>Wh)BdGG#Pk#C9?E zF!uOYUrv+zv5mXIeL^||mhpB>`B$CYhIn7yco{Pd6iti})zR1;mv4SE%Jd|vi1z!$ z2BF-`*f$*5cq6UBdRdNRoYlSaJh42CJ%XGeK-OPgO*A=N4PM3jEQuy6O7$;$;OwUHK-R{OZ`TR zb6!T`-GiFDBGSabZ}mne)tXrMam{~z!z2#}=84r0%pd?OlOf-Hsu~d0^71A^tU(z_YRMYu5Yb|t`Pz-w zeqiGbPl4KpL3K_ue^fnU#25Qn>{GxKy#f2+hcUuGL_uTUrV06DmmZ)89HQV6(*X_S zJH44kjQP~`7s&#OAzzHdwLTV5(eMBlP=6Cfk3NY}9!J9`#my-Ju*7=bCcVLaJ%;{n1awc96|$Q8%D&6C*I#hympjnk|_o2MH{zNNPsaoT-+bW`l-v1fri z^E;@|m!f8V?j4vgu2!$Z=m{i!ea)uL-&gysm;VCV9mnt3QGHmq!ZV0PyYQFOS-^k6 zSK1$8`igBihNk)vwtisU{tmmO>mI?03nmmyE4)|wDZN+v2c)3)N?%3)C}Xcg1YxiA zLu%kn^Rf4UpiQxV#@jV`djvE9e(NtwhrMtAvT6MiTQp$kCLb?JkHOk8QmA^PXISLWx0M z?1N}8>S>!|&z!;;CP`C2ylETwEyyxxp*Rc-?ZywHQZUq>0O}F7`rP;=s{SCpVAN3w zXohD_iRKrvzKi_^n$pM||JFKl>~ivoCGG`t{1rcQEarqUI(~P#RbptwgfR9jz8E=O zF&~Vb@yDf!SWE_E@9}?8U9Zla@{iEI~~PcclqWCjL9FLegdNp6sno= z`i<8@SiLFsqtj2Kqag?CS(^F5G44hzV&0}XNhy7KYDVhtGkPne^xp(bRpi&EB(FFVy5G$G?k zX*+%klo?AW;)AK-v9YmRr&EFajEVo6f2wBhsxO#HZ=3{*;5u2&MhdMgXkJG z?LbAPkjXmM>HSldeczEmd`>Q8ll!NV$?T$oXqjawcW36HrMa+_spe|wBDCL3A41Uw zYEIoQI>mDJl&8v>p4vOLT*TkynWUYzOhJOlB!-Kb6?-xB5VD5u-%_cbUbez0QxvVv z>P86_O%ysa)oSLHoy}A-*?j#Jk~V(`Wsq2K>ND9)X%-5Yh~s+;1{}`U?x{IB1kn${ zuc;c6z_$QtiNX1DHS5^9d<{C}lzQMj6nLOkhx%=;p3m0O(?@0o?Brr4MYuHdTZ3Vf z38Ys?YmoA#FWRzY#CyGyl$@cDi|%dfb|+d+#R(xvzjF!dr-6`}?1M{Czzrf1-O1EKNQ9(xgCT3qgEq8bS;ZNOrJ`gl zRWzo13%-o7`t`_Rt+bs;*!tU^Og)o6f?k^#OwTIy>z!HBd`?@w09Mhi?3t6`VLOkZ3h6)#vMtRzo#yg_ZP~jrdaE|)Y zcw2NDDjd=f5M)xIy9a7U!(hWL$nAQhiXtDchV1_J(K#T70Q`hx*-?BMi(L?QbbWkq5i%It20w+qu(z}`xtw8ey5AycXc|4D^c<(QG#8mAzO~BI9KCs#*e670iEpj4G)Irfa#UAd zxf+=x%z6;lxNbI!9FZT_>PnLg@hvjPrqS)mS#ZgIW^22j_1R&amJJjQ%whfFXT5Ye zO&^Gxa~7(Zf@bM#WTc~qawx*~4V-BSR>C&(r*=MPQ+XPvf}+RtnQJ&0z_1_|(^+i4 zOsrl3^NFg(Cb6Q4Dn>MbB1nBSl}30tLtiPT<)bO0FmA?(^3fDg7&l`?`DltLjGHl{ zd^AM_w-#MF^3fC#ELwC#`Dls=zAQSTd^AM_GZr0DKAIwe1B;F*AC3LW#An^xc1RN~ z%vu%kEy$5YjhJQ;jFd#PRc6Yg!<*>$IH~rF&?1g0n@9$!*pMx8Us09Uc`_GBOfM** zG>l|Kvq2r!N*4)TFhS8Z(+M?Eb>m}*8aha1&aEPu%FJt5pfDTbUzW!C&+hTjWm1+vp+hSqcbFbgs%(|f`L;# z%+fTG(Af|`+2jBLzDDp&-UgN($b(Bc2&A>NOn+p8^oy2_F&8!L;*QP)QK{O=OeH<7 zv6$;Qz;-7|@Z_ zwqJ*g2vRD8Sa=esTM&&hv7D2d$x}h> z3i^ecxx=Iq!-!5jVW~##sE;z*YzRCRE2hpwfd zG*b^K%~5}qV~E>mYo5#5h2>0P$)VZBQSNx`MW=ux5Awz_KCWjmOepS@b$cAgtd3fs zh<)z?RTV0#P<2NyQy#>~p%JQu*F7LLyFBNkH9l9Sv!`7+ldk#$7FfD^t%3*>Vo`%`aV0*|3HiC#dkk7hLuuqa39fnI!YH;ztp;!{>-9 zI*dDw5<9?xF=}z-xr(`&Q;+i2>ymLbTpe;*b(1hRltX$PwkwZ-uY&GX7awYJ^SXVw2g_K zDWG($tX<-x-d*{+wFF_{U=mY0&_|%aaX3>u0Ul7NUsBg#ipLBg#ipLBg#ipLBg#i(w`*4tJC`)j51?M-n@i zZWh5vbF^gDJa(ePo9OqXs_hq{MI2K$ks{Q&hHRrHv2*Fples`*B1e4(lu#N*GNMJ6 z9o9-030*Kj(KXWvHBoir6RI|JkjR`{MKYC{KThqXv3VTyVtJ4waGOI16A!yV_ z$PkqFL8ZN!6V6n%O!~{^>XD`5oKq$A&N`iS>?XlAUelg4=xHYlXUuSC?sE`rRgP9z zhDPq9b51Qw)p?NY4N??1k?@5c);stSC~JCZoAhMW?9!o3txjt7MADHmVdzQIae7t> z1oqG#9LZDao^E$y!26maC&7B3)g;h7LLm@==E)_K^Qa_SAH~$|iqsZGHh!>jWfGe! zLh+bUb*agtPx|=Cdsk}oDlpM)FO~~XpjULsb3iG*k=U?adt~_=0&*QR)Mhwf0@efPXJ^!tGnvUFqv-WEd0kJ8K=7n5 zg%G#viIkGPEtbnC$N_e7QjZZgTq5Cf$(|yw=r|G_w6#eP>>md0LD+-fL&-_&-zd}I z;2?F64dWor+_NB&y#3zZNdk0)uErpF3jLu2nF@|oal+(E2C;~Ts(f5io=PFugUZ1^~wvau~-L(C=z)bYn_fB=(V~~;bF!kOy zPj-1`%*KF}!s3Xzn1PO^w6dp}Af<(`u)g3;cSEGhS# zWD&{so@7b6=OjZItXA0GlPoFsoMechFA~X;a_?t*lOW)tth#=iFU{`ty#84hftedg zw>YYXqNLa}5@oN@I}#4#B(t4^&%XAr@RB@RPaDKogRUW8tmX;yNKg&i(mSb!h=L2d02#siau-S zH`ln12=AAg^)w5LQwNu!J@AlcG}JFNCI)hjs{k>j6d?MkbB>a$RHf>my{6J5oDH4y zJhIZ*RLUa0b9PbK7$5KPIEIcIY&r{cqdolNX{+#6&i}NVJ#^HB5amcfALjR=N)2^> zJ!qH9@C_v+w}0pj3<8=4r*MFvJOV+e-4_+=4g(mNV+!n_sv8`s!K^-8x1kh?Hio-c zSOwy#0fu#k07ZfcQRdcP` z!ktcxkk@Qq^;b@j1A;XAM;PCKv=4wr^cnU=k+x^{DY6;Wcl0KyuAvrN$t+~*j_&Q~ z&W{`x#9OR)^6G?8WTeeJ)pP(KQ^i|SD@KsBKIj(S*(lOt{AdE9w$DN`Wr zjv%H#X%>$*)HO8CeoTMU>~#>KnJ~iG@pQiCi%r#;%a?MiyvSKPSG};UcHVH31e*YO z8kKbwYR;tJtlT}(18MTt7U{_;%Caww8tfdp<&V|bd$p+@`5ClPum+B*Ns>rn$)x0lF}Ay zjcPlJ>i(gS9OUTk%rzQ#hchK#m+hnOkU+yTqwSDuRPU{ih#Ul20pW$(v-xp-L@ap- z%fbmDct@VKbiD>~mcKu&>im0qT)CrK!`+pZ5#tscnARx4EEWTeQvx6uweXt=JCyC+ zm>UfT*>p8bR(b5J4lR?@t;QP%__JrCqpas564Ab?mT#*@nNhGZ_=)vdV$cml9+bf5Bz%Z15+j@eck(6=&*sUz{XHk{&iV+{D=0rN)+vd0zLtVA-aqY_fno zAE$+2aUgm9i7F3<63TM~Hmb9<5f3Z@)_&MuEA-I{T_Q&}G7`HwKCUfUcUWYgtub!P zj*lzL)<8mjlh;rZ5V*TRbxJCFV<@79*BpILu$m`wTmWAoJ2UZZ5x=b(XiTHAqLo8H z@_M11Ibv!7KV7uvmrB{amNMFuB$f)RGLm`L~nr979%*1$aVnf-2lOd@Fyjbp67jjP3t6BvF#{B!? zpq-p!CZJ#dj~vj0pnDcGl}h214K%&6Oi=Oq4Sl<_W{=;t1Nh6L(DjrI%Z_9%SOp2Ut#_IloRo7nhiCRn3cPrE-VGNU^3aI!+AeSP*5` z$8hIrNntS+xzFuK-h+c8M>)nXm-xBO$caHWyJ=jR?9ZOwJ4l7|byM-Zx0?#8VP|eR zQ_4CtGwsDc<#5Mc_Xzq-E4v74;NdfJ9Lm^77f4?4pIy{!=Vko6l+*d!Px8%D1T16)8Ufl zy>=p%(|r&eLv5*m%bL9q{aAp6TKM5wyL6(KR=W-#q8|xP@$K1CzfrZWwOBb+KNch@ z1tDRPu6jSlI?bKC4{0B9c#>A)Eq>`oI(aN&(rcV_)_U$pRhDXtT0lroeMsS8rA!xP z<1Y~xUcT45{)W`b(3ef??xy;%+ET1B+=ry$vMTU^xX~e>t)X4HgZX7AYB#@X8qJNe z17=xquY{7OD78mA@F!n<`bJo#*oiA8Cg%>#4Wz~4zm2=e!y&elv(Ve)YSX#{0)j$j z1@Z;lZQ)dDcTKlUWGa~~9r|UeRohyuD2X6t7j{avOv)8LXLsx_sQsYEG_@cCdwz5k z*a;bO^@lKL26qDk0jF=I<=n(|+cIiQ$3Ui0c_Khln)tghx*V373nX8SQL#HyTP|}{ z`D%gir&&Y9^uZwZ#PuD0h_yzsY_r*8+1+3;n z^P(>X=3s9=G~xpp$P9-H_5~Jf04XzCFsNVyL1hLD1{G`|sLWWwpn?qql^H4+RIq`d zG9v|p3N~2Brb#DM*`^?Y{F=`#K`NSu4bm1porEZi4j7=b<-`#rwPo-?;?YL^EoK*A z&+9IY3n7DNxbA771cC%KG4bx8Cb~@J!bmaHMyGT%)JLmnI@sr0g$|Uj`LrA~{$5Tu z4Xw{4w#)3ju!L)OsVIC*mRzh1Yi*<<^$GLr9;KM1_Q51=36QzGFDF?pzni&IClyxq`S>c(Ok;^bFwVjvEk?|*B%S#iPK z!-ha@8nPK-59!|VM5`DqY%We6!AYuaz_hbNP#KJ>zbQ%r2g8tfyPveUT<1=) z-3F8}W5jDi&dbjG`Pr0Fih_BP6)jrV8R42x{-_^J(TCYuN{<(>(sT;C(BUI)wOH2QLK*txif z^4tS3ZlR{aR5=t1ni%u~LV1JCB9tEoYG(Jjy|}m%nl3^o`uOf`_vQu+x7K;{o!~lS z^xgJy#i++%(ISu5d8j!8flmiY-Cj;|v98XmjRLu#OCxDw@lc@Ig%d2i-dKO`d{6eM-`uhqR!+|d++2S zTnw&(Lf0(B%8;VZd}WD3DNwWKPv&zD%`57&Rh+99oDzY08G(=mUC}~NA!?S2ObRJW zC7s*y{K*RBclCK|p#n3kdEBLqwB-pFfz|l}ZoAJ^7x2%?SXF1iu4Tx=l-{Ul`kGt1 z78YsMvYFDnwOo@#@x&+>!-$hvkW`#Qxex$#08p$bP%ab{tejGyRw)sjujh-7RWH&r zl@XxC5lbAil+{sG!c=25j$1G1=&fF!w@@0LTOEpK3a2uwmzNY=nXgg~^)d*9qPI$z zASDb)CX(ubstK{Pi&X-ZxvEO6%I`3h*U|OoI&R3Z3gyy5JXcVOZn^x3>x)@`UcmUr#}U2t_F=QH2}b-R?wH{OX$uh3Hb*=XLL}wqJAr) zlBgG>mQYoAP`&v<-1tP9>M*q`uG_Ov)6}>M6f{6X)=t%+jHD|Rso+6%wL&46Uq+sG zn#d~@GWeu$ia?Hz`d6t@L#T&&PF*qEo~xHZq?KM-vFv^JJnl@UqF|z}I#pbSlr7*A zWozD{{su%DsQCh&nbBCr*u`H&Q4oK@kCxPU)}tC2lrcwt^_QCCoUmwMsyKBAgw3C< z!a#;N6NJRR{A6s>rG1iY@}n1nb4hJk&G@B9xvEvKYZU z87vFb9R)*rUWPW0@RA!sf1p`!J_8K`8|{hvxyyxoR`K#)l^seZjG@w0|3w_4SabP0 z4(}?3OnttLfw+)`=ZIo%IE9G@b&6!scs5N0s=9%&=#CsUGZarKkg35(1xme8R6vap z^@O(60p~K=6PW05z=8P}Dl5>*))z3TySe3suk9wj6pL8+0K>QG8mtwoi9t?6$5OVV z?HzA)lTa7*WYn5G94RerMTS3qH}wHA;ZWdM#nmrftl%P@V%5F*T-RWe6PH$`N>-Y? z>a^idP*6(j2R8j3H@g?Ri^w9=>?UK0+eNk_AMGYviQ7fCB5Um?TZ!96wj#IfCR>Ty zMYbXX?j~D_+eNk_PwpmLiQCO^H;JQ-=TWT&vnio2>Omyh@X%q9W_43L%~R~A&Y}h6 zUDaH4a$VG)Pt4xCDr}i(7lbxD^8@9L#KSzY+sVG$yt*h>E0J?IJ-Ahx-ILkT$z`h< zps7eac&^!!rwAW;w#wVj^`MH~6PQloVJc`lo{x12oSwDH&lj(Q+&pHb!?H1h)InCl zo^+Ct#OWX#VMjX2M&fjkjj$h`WFv7p$VS+WPO_0W9b_ZyMJL%voDQ-PcA}GPBu*z| z$iy*pG?+{YbWqObj6o-*Z=O;obrQ`BbW}6Z$#hUZEm!?cs;FgR9S|0Mu-}4lXnT6^ zE{BU(1ZI3L7X4a=-+t;%j`4fe0$t|ONgH&UMaQksO$HqlpcP-($@pxQR_A0j<1O3n zYE5}cRnOszM$I8N59rVB$m(KpQFwuwc*-~pWSKA_ysj}wfN3zg{#pV5+h837s7v*N&-ze;Wh?N%|r5yV=e;J zH=70?QnGkD6l)PMrHsF!-H@;YS}Hi@Y7x_azTT7;rQ6XewZsq(9I{%`MEfEy(h-Co zLliZyqMb-DsS2rlUF|uW2?>lQ`dx^XJ4mO=elH>wy*+9z zEo~!u7j=P6Ps%J(X7>i;<5KN7MsGu)96_e!gI>{96_Gau#Kp83DNc^anKo!Ta_4bn z_tZtU61DS8WiQo5rV_RDOl4=)MWzz9^Gs!*)kUTfwew76*VRR)61DS8We?UxrV_P_ z!EM@vH5G$K3?WlGo!5cv#8MrLk0Z!xo?sXC6}>g%8uKTeO~4U&}N*C$pI_ z7j!q0J~PtowBBu2ofoPV``yKuZk1%$L^fmWJ6$-N^7j!kV>8nbB{7Z|*CCFmVMEeJ zGz|WBqxm=!qZ}t9H(#{&^YVBRbeeVv^dhw%N4Sp;vXLn5XCmB22boBe_A?RgqJvB% zO8c1zH_<^R5~cl2gnQ^96N%D(Cc-UrkcmX;V9b~pf=&jHDSrE9Y`*SyQ1a#pbxb<=WD@1S~Grqw=K(L&o6Y(cw|WOo@{v;y#6^&(MEsdqqn6H#ZcYQM`Y zE@B}%ZGlcp&{-R_V)!~3m93I$zfPMoctNW=5nx7eLrs$k%Yvhr!~%>(JfE4a6`Nm* zI4Hs>^|gsaHW<+7{lq8y424mSd5$WFUnbX{O2!&Z%g}tjTB~arZgi*=m9at48ze-G z*rQgWGkCPe{24uN1W zQu7@Zm0?A&)*fyQHKtsu&|P`yVzEdP?=e^0pVoIL(nmwY-EzsEDWdzaG2&>>fp#-x zIA_VDA=Dl(lsqBZj8dDd+ zeQ&JHWHP(xKx@6B@HliZerQZ$uwEeFLipSGEiss>*E88gK665_z`H2|%@6(vfp<}!`hECL>yMflRj$AWX$PfOkX(6@^F2e zDd67UsUwcNL6v zb#({-ZG0(~9`vi4_nKeFrLQ|CsnA+ZdChtPF~0FtT@3z(_Xo8{aff0bOs=dcL+t+= z_fwCOH6~=ZDtbm$2X^>1$8E3e+TB2QWo3NaUY}RV$amEjlpS&P9}S(g?y+5Wl=W%1 z4w=aKxXaGluESjSvL1CkiT3I127}2mT;3KO<&tQ8oE)O-5c_QR_#?kSZ^4tEvm zFk1ctNkni!_rV05f?^`+D)vEt?jur$voZ(khrXzutZpd+{Xox1)?KLhsUN5sf>cFy zXa)O$BA+aOtyhdu5{G(@)z_TSaTF~@3wMw}I7E%rFC_KLUOzEdTZGFVct9!J^LaV0 zS>sv?A7iaCIsO|K)|eDHx~ncZq+ADyhq9!_n4GAhwP7? zjYrBFSIQVEjo7MhZD_rav+BkpK_9JP$%QYl?q>V7Hp*asDbvof$5_4EFl4o%4sPS7ZB%&^Fg%bP}}`hYF-)_d|h3e0>7<#FG?NZH%R#Xk0%~N)GB9 z#9|>7(Ye-pXLZ}5*7$^D>vVDIAhe4QYoUWpuCCX9=ZJd4S#stU_?Js--SY)#U$6R6^5j7B=P1^R0uC zH>3swU?Oi!A-kN1$V+Z@ilYxvUM9x}dEC}YVbyfom=Kh5qb^KUWT=lO3d8~##!!u^ z%16^Tu_`u3l#ix}VkvBlC?8D`#roG6Q9ha?!lF02a^#~aBCK?yBg#ip#LST<5#^&P zVtKkrMEPin=p1blQ9c^`pvf-S+yhM^O|-CyZyw(o?q4%DUb6^Bnxn0D&6G!nH_`9e z;I?0c7I943M4Hd$8?uF|gqj$7lgtIC(hEwW=CLLoMmnsOXxq}rgpBplNjlLr(`hOu zQhY|J4ILyh=T?!LWJG>VI?gCEQj?5u8&2mLMMg4ZG&)b$&EUrO4)SRc$CM3M_DV?QW4c#vTseR4a4*meF-wKUG{nqaT`^6a?bzuyEPZi3XiQSNE`9&E)H~h)_zau$xTB$J@$P8w&)j zoJJ1Mym84{awd<=*!m8_^pR0f*H=8fwuTb*$pp?Jv5{OXmrp45NyHnl4W?4C7)6SM zC{l{_B-8YxpbA5=5pl#Ga}%39aAanTD3~N$Q}s(xp%84$#=`1rCL(prZNlKUbXsEV zu}7sU5n%|Xbb*HQ0uI$Axvr*4NuM*IU2J z@p`4TTWN~LTkmR}4Nt%M$a+_6v#TZi4s4b!+EX^{y92g-?p{*|Q@ibjtbWnfecJ5P z+e@n;{;j7D?Cw27;)957_{HDWV`It>UWrU}4KhpCP3xch8!|U%Ahpc0tP= z%9oZ_teRb#s+O}(4L4oyE-&eWEE?;{qccM)$SCed#+BR)rxHUI3F-Q>3Smf`84-Cz zE~0Rw=-JpDJeewG>Tq^rn_@+Miq1Vnibl=yOU)w$0!Ue{qJ6?SWmVXf5T5BCXx>L? zB+PL~`1{D=OewSAREPKD+I6RzNKtrki&n0trM$N$*iP5OvpX7kw6!c#p?5U8sX+)bS=Vu?cBloy z6llc_{^)DDM#>t)a9rh$5dO+CODo&8riZ<^Ts@ho<|f%!5I0TI_640hGzUEsD892} zw8^OsWzs<=${?O5iLi*f@feg-r_;-`_RKzrCxrl7R#$B$jo$`$X7;_xpP8L6R&ZC- zY&E|O?`rqb0G&Nm!63DlN}f_@4s_0EAdt38c4E8IMuB_#8Q0!63B!TN@ThF)ut4vX zgLrAJa&6X>t+!mND zRhH_(j-DJa#o#u;mG(L{Oi`6nt6cpvdvWf9xN!p}r_fbE!-kndPO0 zMV}{8SK;ZFTdlpgKF&|e{;9;kK1zNk-5#g29|5aZ$8>=XgOf3r12;^2@bVctmBYF? zWV?q}^u43gznPsV9VOvE*BcI<>y7Gjy#!SResV%L+SR$<{(#Uw9eu8cVzqa!2feO_ zgT3@U1)NWjS=Fpf+T8BN7&9=!qETXTo$C#kTjw3SkAbtYTMC)tTrLyO)Z=&7vT&f6 zUA%M7DPoiXsYp+A>JMJQ2vR2+A?wld{JfTdX6e#Md}{o{Zo%EJnx$%- zp_tL`)FErfvl&ev8-=fS|@JQ`Y@cbXUHon0-?>A<`@9KARXMlR0b6ZzeC8mlwc zs;=ajJ(zKqr)U+{^}0RyeRTz&*haew>dWPPE`G~xx89;2Zo8G~%h653t3LK%!MI#L zfxY5=&3U?@VpO&Obt$NHHRyS@v8PUXd+JoiS9e&K98JmJ4Xmg{I)qe9czrq+zbV)3)T*YD}D} z#pkuKV}3HQ0_~p~QhS99+#sYbWP>nq~A8Fb+lo*)w ztf?QcycZgGYi#koJE^$anR+t8y2Nz*Iwp#hN+F-k*C%maG39Llv7N^*8Pd|A>4q_? zR!C+}z?)j!bsyY-2q8P#b^qk*+;U?ilH|P=k`bjNHK}$U#`*)xtMlAlY)0UkU7ryG zCPBJ7`cUC#eMX383cBS9eo_sY_Gk`wtr=}0L+uF0W}Rv=4-F#++_(EI+wen)A!y)~ zPl5?&l@(?56{(ez5Dg(O0+_Moqq8>rvE*SA7)VPGYBw>g>-u?oob`)bjF+6duZ~v5 zF%SWEHm^Lww9;rY#PwH~muX^PR^27H2N&>}Lr7JKvXmidkcF-6pc0AFPNsIMM)q|| zJ4SzVrKMiZZKS(rKpzws(rltN#1(`{J{=RPxt5AXVZwt+sC0Kj(`8ogG7|}(V$5VV zE!scR*=cgxqcns2=Rr3JWusfhMVVs_I^}t{V}@FIM4iCnJJHO~ zxWO}|Kt-A#WVox3@xcy2noBBF$Zw`zDNJV3^Fj$@_YC8XzAA2kg+gf6nRjr_Le>GL z>6B_#MI(LOUaRNmdLmV>@o|5-biKr1y91){U^;C@5?P5mIs4~3%n9yEV=7ZvC?^t5 zA+J^uX#aumY`L0~KqyL5l&DDayVKLQHpJa+Tn5=+)Oa;QYGp2MnTt?2NtX%35Dlr< zNya|Uwu2?-q<8V~MWCnI(FD^oQy;Zi3Grg6UN!42IOHOg!?Zn(X#?{DG-;U<;#F2r z^KjLV&h(nu2P2i4skQ3_+ymCC9zw}&=U z=gqA0)K!EjE~)LNiJeii7g!o-6a}?nJ@w?ws!wPEJ>J!y-*(cq+r%*{UU4uLt{TN8 z<>ztLqu%S$%|efHXLSL(`KY_ZfW4a>j#ihTAKm-)qX|=Y zKIZ&dmFG!_iHS)YnP;2e>E18YO}c#==Yu3EH^{s(3RviE zF>R|m0#wEHzA~C}EjSX?E*U*#$EnaEyTRr_nVql>URZYytPs3+qKVr{#uFI(<;5Z^ zR^oUpR`B%-zpX*1pArTw3HC|{QVwCUu(ct^_jCxO>G!Inm_~MTlora)`xeZ0UEwp@ zDQL*0sL1-9!3DO7wyd=Nb!w063j zK63D$0=W-P+ptWX!D#_{$$AxQU*(=UXm6@`z*ooaNHp1(^Vsr+>$=q=8!dWG(j%)! zJph)`{g)-(A+Es@aXk;?pVcd}E#pWjq9it#hs8$;#?!lssS z5X1wMX36yqaq&6?CPefH`0&v-pO_VgyjgL*@{R5|dp;UzG4fTr(O}8l<*XZgDRZer z*xnn<`jLZSi*Ky+`p!bVyfouO6GOyF`b>K};y``zLcC`~x{X|CLy$&(vmuC|(-f8+ z{)WPZ5Y1W%B9^^jA_N~;jn_M(w**IWMLwfnh~h#lCeFe$RXV|kv}jlh7+@BPOXaXj zpu;`fNoV|^gYvyJWYMVX8LiS@Cj%M1v$v4JF=gp+W<@J?YsaAU4jF#F>g1;C>@2i2 zlg((6euXr@Avq_7xtj9uW@oID^7U3(wn}M`>H2$QZ-+U@D&$L!RoV?Rb*oZ)h@47k zKajSgd_CGH7s=(LcKiq&9t(@)+^nkp)~(V`i7=n9)+lHpqX2At^);t9TyhFQine;D zO5y04oPO38@q&AG@K+_QE>OXXI$I}LBX?_=xdI#(kT+8NrGGddqmOi)+n`Xosz)qJ zqqSzuky{*iUc`z*5Bc1RRhlg2oE0c9D_eW3g0{034&_ljl_RRcr%|Es2Z>kbq*X6g ztjcbb&-$g;PgwN3@^%ep8NQXF`sn*J%i-_f?|T{MBf?)gsMGyxhJVZOM+|*QtH+n^ z(&0Dn(eOHkcQRCge1EbhbhxVv8s5yX&d?WBJ;s^-Z!o>jFudvx9Y4b z>F@#{3Iqml&R5_;rR)GyErp*07GZaYVx{45t|$XZSgW=NNvQ;WG@kkLvgn z4CfeD82;xm{rw!n8^-l}oZ&+Z&oKNT!?O&3iQ!`m&xPPG-KEoejNz9Vo@e->?fUzp z48P0p8HRW6(BB6brWsB#yr1E5hEFnln&Ce&+;X>0XDS3w@Oy>fLk!O_{ErMDWB4V8 z=NaBU!SpelVR)QjiD8A|uQNQy@aqhpW_aCBonD;bUWQW)PcW=7e2C#0hM!>gC_@?F z13b<@%J5N!f57lO!_TI5{*N(??bYvF7#?GIoZ)*Jo@IE?J{|rz!?!a$!|+24A7ywx z1i!Rj$3M^Tn+%^}c=e?I9%pzz!{ZF!&hQMw4>5d{;cqfL$MAa$tphsU!wjbwzKh`* zh96{jmf;r}o)i2*oz7W?UtxHj;a@U*n&B%Bad{Z-W;n&L&hQMwUu5_w!{26jj^TG1 zKEv>`!#e#f40kb{VmN$6f1hCZE{10q?mnu&Pcb~fu)^@RH|p;L4By1?IKu}So?-ZL zhL1A*Q-)77yk(lxV|e3?evdPJmZ3GP@p~9fF+9Pr!tm`3&oKNl!}AQUx`)$exS!z^ z!Z-hR-nkM~2p$bhvYG3Bv!A-_JArbB0ed{0_rs7;b$l=g06ih64=mVmQI@ z4;h|k`2R6{hT#)$)9IaO_(@y8KgRGWhEFs6zmMzhPcyta!}Kt`o8bh*o9FcR0ftqE zXBb|U)!*X`Kh5wlhUY`@IexctI$nlhh2hs3KF#p^3@t~8e+|O{hQ}BlXSjD>hnr&f zc7|sdKDeO2pJDiMhL1A*3d8dZw=e4O6AW_3?FBBj^ST1e1_rmCpbNZTZ{b8Fu`zw;Q@wI3{NvW!|;xhjz7Tg znVNnV_>cT<)iwTA3rO@KQMfZ;U6w zb^LP-V<$O1hJV2DJi~7=e1_o*S9Ex*<6q3W#2Veu7&~Tdux5?;n6+ZWUurF0YD#CL zb^J;bev>u+N)!GC)-7=pezWy$BmOdL^G&Akms^j&)`Wkd^|TTHB5TWSrtnu-aU=f4 z)_V-K9<#2r&KmJstoR2_>2I~3`iKdCmG#X}oA6g#kA2~|75>GnYplnO_-n0mM*MZw z6Gr??tmnRHO8U|nHNh58AVl<;Rm_-%|oAHwfZ>ECE={>pJYQC|8t zqn;bv_aWdZ{bxey{A(4yv7dYrcvHE)0K8>2_P0M~{KRJ_)RX-A2ID{R*&zP!8UI)a zf4M5iRn}}MotHEITqt~k@lS>DX~us$gnu*RtzQe$Q)K*>5dPhakB9I-%lOd{{#O`3 z6~cdk@wrgB&NKdaDEv1WUk~A*WBmI=_!n)U3cbquLed_9!!Amc9$;nR%&Xb69d z@sEY@Cm4Ty2>(vTp9|s7GX8uB|I3WGLhbcA#@`YO{{-W=gu;KF@u?90yNo{+!e0{8 z^;QYtuVMVZ3E^J{JdL9>x9k2hN73=y!FZ7Z9amV(IxXSvm{1tO|1RU>A^eS(@;K%6 zZ{l>Q*-hi|PK3Y2+G;%=n*ZOR@Qw2iC1*-!65%bYaou@~N~dxDcU1VR8`hC!#)sFP zpHk^Gt_!~i{7tA&k*-`tWZ?H-886ZfSqb)Sq+Z_myB~N;M|R!UaF7o$UUu(W8Gr32 z9bR^+H#7cT#>?(uknyj10jGa(LSbIa_}>TKM99 z^^AWf@TPKooWqN>PU!zr;I~*eSdV|{IH#b&*CW!o<3&1Ok+Mj6f1B~Lo4=b=`-dxZ z_%m}83iDyc??XeVc4zKZXs$C}q(o9bH(tr%nVXjSISRbQ<)jrTaCq5`KE)qju!Y*u z<6F?P)$exT6+PJr^)B`EHpYuoNBSX#t_m;G2EqR^<7HR6ODAs)?6#~p>N(6uJ0-vOTJk=^U7Ih}p`G(BftH^CSUhORZ!c^~jp-oJdm4xi#!9|oS%j}K}5 zJ&gaaj2Ef=XBdCqbvnFAL!^E_47{oTe1XG@bV>T*R#Z6UyX9`3ul{RUp9S8O&hK(~ zk)lfbz5xv7)(tmUkA=qF0pKZpkxu?C)Bo#?ccl%C-+QADFS|-~Gxf^?Z=&Zchj*nM z9RBY?809NcB&nZU!LpmuSq7fMyV6TeXA4+)!pkmP(%H{=S9-?bAC&NKnNXNlG5%*6 zKfuzs?=b$Gz*GNxI@CX}!&bpW=P>X@k4PUZjbF{}aZG)KdEY4}hm}aeZhWxDypf^oSHm z()r9y8ZW08nBLXz&ln#+G@;&QoZf;5Rd02Tmv)>7-c--~?1Y0{x`hF9Nq?=>hm1e zCz@OR-VHpZBT`VQx6d$MPJfm;{Qtx0JjdzCI`Sjnso#D()Nfz_2uIVBkRI{0^Zav|DDqjsjt+-_XPjO36;)%_1Cgq0fH%CIkgae z>~oA4X|MF>8*bC#A=xTZ(i_u%Vw`scYF-@)Q z*I#ftx1qxmUQUC5!1#ZIj0i7M#}6|8*MT?H=Mx-WPT6uCJ~P1SCnpr<4CB9ujzsAX zOlUlYmHO>YGCnlkml-doICxdRPY>$w@qr2T{**>rf5Ui@vd0;JB_=M)S5A|6G5!$n zSMjqSJbsAqjq<&!q_cNI1($w%^N?Oo!+h)j@RYBdnq1DA;6L$&cvwE#TwoDfs6fIJ`*DrCrX9>2%~2 z>Q6Y@|G{{Xt_z*dj_dGp$|CqPcbV(?-$mfR3_R7FoF<}K)o*&c#>*+<4#s~KcvCyR z?hQJ;drGxYNBETBQxghNi$lT>r-yp99{M{#oEv`|j82NWH!CZl-gG#!I_= zmho~bB=f+ZGyeEwFgy(hN?%S@q#kzd)c81uM|G*+F~-X&pY-z@<3&3H-CO-W#dtY2 zlJ@!nx~|0n4%a?b=7_V_kUtgnGaK z5{*9uysH008vja-wknJl?UB1V{D&DYS}pf+_|E}P{KnHC(CJ*y_@{t3mFs(qAGlSA z=it_j`_17efhRiM(=U!tWW1c3o#XNNH^5VSh3C)bIJ}%v%6d96snZwji{In)f53P- zrT;wF!@h%DZ?l?y85ecN$4_Yd-*Wh0Q}aL8ixrJ`IQ`!Np2{U!MK>}2yNnktsuy!Q zuRNl|i(#(h`ti(!3Mu3Cy>HU^bCVjMLgzZil4oe2E@0-op>Eu;Uz=^wT= zUbFi16^UbHg`jK4QyPQL;?(J9)8 zn0D0fQO3vbnNaUi&tGM{Xp=~}UOcDM*|Ma=->70))(G&XesUj&7p>2ia`=w`Pwo56 zmyauqjJwZqc+m>MGOd1JWBi#nPN;WD=f<3-N3=qO{x<+`qQ}Zs>$UpQ{QNf34nMGa z+CDTnGi%!x{2Dn6&~|p<{J98g!E(tV1@BzhUMQ63G6g#a7c(`w0baSjE;w~3w{2u- zEM*R)l*RSk$+-WgUOi>aS2MV`Ew@xGoVvBCRD-@EZK-N1WODy21^>ECWj2+#u{;hhCBuh;ZlZhsnN#t4A~BiGzJ?s zkUVS(*O*0exFNa5IvGqg25Kx-W1v(c4F>Xu8mVd|YPd1=;l_BQjoo9cv8u-g#R@Zg z;~AT=cWt=TM*Ijsk1Nm)%GW=Y_%#?%u(|b6Z;NL?%Hi9wK8V< zH`)oiHjja8G5w}%o`qThZX|M!U03e*JGNLh-r(Z9WiLPg`Y@ab(B<`GybEO{w` zV`aMtOHtQ!bS5#P?~e7_#OSj@8<@hsiEr5Q^)bZGE@ny#jvB$8k4tS(?BtX&DUHyG zYf2)o3mMLrYEHGDE@FJ}a(3*PJ-98kEeZd-7%zR}c{jX9t$W{zG=er*%(_G#U{Q+2>d#TfiNCV8FY%hNIc-Jh*+E`rYJFOgOoG z$zG~Cbl2Iez5}+Y`!zM)&}`$i8eK({SWb*O#Y+8@4YvpgU}^@&=(v`}!= zmlSP9=;A@`KnE;}-!o-8J({oCDjmAQYbT8jbYVm%q&dA`ju)Hb{U^V+}Njg{)#k=rpAc_dON zoKtoV?nmengfh0O%2^oLQGJ_qr@QRnfHLm*n>gL23(3jXF|KPP_a)kus$vPeK`J~q zwqa_RLhu9EuI17m&0kMvvW{>E12WwFE*irusXM@2`S3aq7|jEwa(aBoHU>Q1eT|zN zs?$DMv0d4Md#jyqj@5HyZD~$#l-B4LDLYpy+t{z=$i0o~Nv2zgniw(#F9 zA$=ZemvL{oR{j8eY{!stm@~XoqGgzcvh_jx-eh8kB{EpZoCRE;kq)k*dW-2x36lx= zOPWN@+P-Pz@XQ;RoF!)xdy?jyOasq?%W(}88>JKC0l*Xt2ILl_A-Tm)v)p25S8@xu z_~XGz?8|;S@@ikR_s)ouse}HI+L=4I|(I7IMOfIuZ_ww zP9hJrg0@jJv}&bGN-E^8T5i9M6t)IL;}Jr>V$s`_XeQXOHy=_o^X9zR&gMMGQ3UwV z5%8gh;PvYsFyO?G9x10?S7XFsWUKIM=5Q0bM;pG(leHR*6H$ z3uML6UHGz#cGd+fnLBgK8QiZ;%jRDEb8_B;c5Vp8XsJT#X`r?EV%t!4St#kfXl z$dkSB@lXl+MGz#@kFHGKX9w1xoJ0CW#J2Pc+u&cz-Bm}mq;jDNSxrH6O@UL`hMA3) z5qBvy%~nCVd5iwfk^!$n@zE|b5@GMNfy@^xgSBE6TsC&)=)QE@>-zfE{`$segx*-! zb*}2vy{R%?EEb8A7^}hUt6e`;aok!q3|C^zh#^xWmZgMf6WS5_Pqt~z3o_VRRIlce z5prn?kETOP;sW`V-=TccmEtE7N{p{HbTnTn9sFRwjJQ!;m8d+?sxqwi&9?hy_)Oa% z^$9yh)>owTOUpA?mxBy8(9zu)DpFLMA~iGBUuNnly5@M2E(Ys#N0O$^h3PsmoPDO$ zC_W0cBBG{0Bxk|}hi3{5Y3$3GP?tSgPK&f@pqaD@_dGOemkew7&Yg;y{nDH^9Q^!bX>R?6T!O+w()|F^~Pe8Ok6fN41Jh)@s z8e-hB@Fo0ezBqZV6zJwm+*+|bTt&@{P3g-iK#vKsVto5p%QYZ7&$g{ZDBzXN{0}B#d6xI*cBgbc0KUg-- z>lN7MRi}fMaz(ER=#-(WcY7qfJ+N#~vo+&x+;CGPQ$}LYg(X`PhAF?IwPd_gjcA?F zA*j{B!l{UZsHE+kKxuj4y84UD-$#y8eMm_6u~W-8RJpFwRo1*!3Xn`pgS6fgU1(|> z1GtAB7&iTM#r=J~A5HCEaE_BJ z$Xc^WK|yn$$n=D(P&+Mswh+Bq$jX9RA7=FyocXcwQx;ewWG*>dF+v?K;#EROAp{sxT-Ag6lI`ZQ6MfP4Zrr~@{J z-F~Gq!JMt=BP0iu4GfI>NYfr7S@MyROV6RfQA4AKLR|#Da?&g`U$86<+EBy*KAhs=`m!>P!1tulO}o$QD-R? zcZ=^HJcc%}hJ!%=NmBR(D4A&BqE9-R6HR$&dk##hZ}JY3f|AO}NhCzWl$Lq-fHY;4 zsWvxeP4G;COWb*;xTx!Mlj)*J2J1LM)eCf}_SXe`k)ne(^e1HK>%kJ?vInEvRf}F1 z4z?*A3@8qR|0?9?vUaw%q#OuQwFjq4)NvC=TAIn@bk@6lWVaVBlF(u_q%PEI>z?SNRus$Z{lz!gfVGC37kIEC7Td$IMA+Sn|3%GLwgql7Ci?h9eP z%SlZ`KI3vzo)}=TUZ`pIk0uX|k3NbB*{`he85Z2Qkfd}z13zwdrcxm-MO8#B5+Til zpf#1p5c=gcnnj+Rr8LD`GE{}gSMn^$+GM}sXUSGsWg4P2%f6>{G7lDY8vg5wWXTJ+ z$%ESl^rF@mCqx0U8udF@gpG#jhb=~w_b6{aN~iJC-lR0{)puj3fzP3a*4Xuwz*>sSfT;Iw@Zef2xT~SC^4788%$t#%bMc zW}{~rcAGh%HdJQ6nLge2LOG+<+VucaGFv5N=Yirspa~suVT_p$d-QQwP~z*!fsC86 z0aq0{EPPH8c}914%^B)Mg7_}W1ax-Y%dhcB`u{U7uy~` ztc3{r>{mG?2pmzmT(`GWg(U{U&KGU?b)fL;d|mrSbV+faM5q614gntr-B0Gx(XLCS z6ELu(l?!g|z!Nm%2wFCha=#g7vm!QJ+Ucu0?hW>D@Es8+8qpotr(k06Jd&DUV!LKF zeY&X+kvt4{JXB#H2tyP&d(f+0;9F9cB+W$IRNWb4HxAJjpI}+*0xf)?reio!#m)D-P*QL zTH3alsV!RDa;Hj&tYN*Xzbr#$ikUL-V&hxYDP$-DKUE5KYa8`SYa1T7EtK(4cUJIM zacbMDW#uG!o3qGwk1Xbph`b^7EDlGNV?TYjh)zsfNb5A@`GG7VBI8UkpGCZKoiYT5 zd@ygriKDd*CzVB9dIFp?x3r)%oyuT^poUDNl# zT(@O{Mii?c(bfoM#R;d_ebvQ5ljLP zfB)kjmnHtnh6(j)g%N+l8A`m(>Z|wXE~Jy@mEd|+M@f1>GvHCETLcW5qJ#W zf8>jQOMF7bxFxQDbxs3|=%+ML3HuIKH3U zA1CnL_~wtl<+ceGddqD(lF+N)Jo@GRr}5yAALsaSjz1?CLvaMjSK^-y#eWaq=k=Zy z9pW+x$S_>~pX2z_erGxUS&n~JE&${B;qv@KD1Q8d6DnlCeO z|5G2CP@$jthyvD&q@nez+y4A&eGU))_}~2Wg!=T&PwNm*NW%Kn9S8hsJ%NW8<3XM!48hBix<$g@!tVzo;$P13pP|Lo_Y23T`wXS+eZj07zoM~k w4n+vPD%wL+gidCMj{kUEzupXRAO1;m$h1WBt117--=?v1IUQgAhV%db0hB$wPXGV_ literal 0 HcmV?d00001 diff --git a/libcdsTest/ms-queue/other b/libcdsTest/ms-queue/other new file mode 100755 index 0000000000000000000000000000000000000000..e6da92d6f90385b4eca9135ffbfc1fbd31e660d3 GIT binary patch literal 87672 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 + struct base_hook_item : public Base + { + int nVal; + int nDisposeCount; + + base_hook_item() + : nDisposeCount( 0 ) + {} + + base_hook_item( base_hook_item const& s) + : nVal( s.nVal ) + , nDisposeCount( s.nDisposeCount ) + {} + }; + + template + struct member_hook_item + { + int nVal; + int nDisposeCount; + Member hMember; + + member_hook_item() + : nDisposeCount( 0 ) + {} + + member_hook_item( member_hook_item const& s ) + : nVal( s.nVal ) + , nDisposeCount( s.nDisposeCount ) + {} + }; + + struct mock_disposer + { + template + void operator ()( T * p ) + { + ++p->nDisposeCount; + } + }; + + }; + +} // namespace cds_test + +#endif // CDSUNIT_QUEUE_TEST_INTRUSIVE_MSQUEUE_H diff --git a/libcdsTest/ms-queue/tmp b/libcdsTest/ms-queue/tmp new file mode 100644 index 00000000..1dacb278 --- /dev/null +++ b/libcdsTest/ms-queue/tmp @@ -0,0 +1,242 @@ +key_delete is called +has write to location: 0x60c1e0 values: 1 +has write to location: 0x1a82928 values: 1a82a10 1a82a20 1a82a30 1a82a40 1a82a50 +has write to location: 0x1a82980 values: 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 +has write to location: 0x1a829e0 values: 7f74888ecf28 0 1a82b10 0 1a82b20 0 1a82b30 0 1a82b40 0 7f74888ecf28 0 1a82b20 0 1a82b20 0 1a82b40 0 1a82b40 0 0 0 +has write to location: 0x1a829f0 values: 1a82b10 0 1a82b10 0 1a82b30 0 1a82b30 0 1a82b50 0 1a82b50 0 +has write to location: 0x1a82b10 values: 0 1a82b20 +has write to location: 0x1a82b20 values: 0 1a82b30 +has write to location: 0x1a82b30 values: 0 1a82b40 +has write to location: 0x1a82b40 values: 0 1a82b50 +has write to location: 0x1a82b50 values: 0 +has write to location: 0x7f74888ecea8 values: 1a82b10 1a82b20 1a82b30 1a82b40 1a82b50 0 +has write to location: 0x7f74888ecee8 values: 1a82b10 1a82b20 1a82b30 1a82b40 1a82b50 0 +has write to location: 0x7f74888ecf28 values: 0 1a82b10 +has write to location: 0x7f74888ecf68 values: 1 2 3 4 5 4 3 2 1 0 +has write to location: 0x7f74888ecf78 values: aaa ccc bbb +----------------------------------------- +location: 0x60c1e0: +0 0 uninitialized relaxed 0x60c1e0 0 ( 0) +location: 0x7f74888ecee8: +0 0 uninitialized relaxed 0x7f74888ecee8 0x7f74888ecf28 ( 0) +location: 0x1a82980: +0 0 uninitialized relaxed 0x1a82980 0 ( 0) +location: 0x7f74888ecee8: +0 0 uninitialized relaxed 0x7f74888ecee8 0x7f74888ecf28 ( 0) +location: 0x7f74888ecf28: +9 1 atomic write release 0x7f74888ecf28 0 ( 0, 9) +location: 0x7f74888ecf28: +9 1 atomic write release 0x7f74888ecf28 0 ( 0, 9) +location: 0x7f74888ecf68: +0 0 uninitialized relaxed 0x7f74888ecf68 0 ( 0) +location: 0x7f74888ecee8: +0 0 uninitialized relaxed 0x7f74888ecee8 0x7f74888ecf28 ( 0) +location: 0x7f74888ecee8: +17 1 atomic rmw release 0x7f74888ecee8 0x7f74888ecf28 0 ( 0, 17) +location: 0x1a82980: +12 1 atomic rmw acq_rel 0x1a82980 0 0 ( 0, 12) +location: 0x7f74888ecee8: +17 1 atomic rmw release 0x7f74888ecee8 0x7f74888ecf28 0 ( 0, 17) +location: 0x1a82b10: +3 1 atomic write release 0x1a82b10 0 ( 0, 3) +location: 0x1a82b10: +3 1 atomic write release 0x1a82b10 0 ( 0, 3) +location: 0x7f74888ecf68: +16 1 atomic rmw relaxed 0x7f74888ecf68 0 0 ( 0, 16) +location: 0x7f74888ecee8: +17 1 atomic rmw release 0x7f74888ecee8 0x7f74888ecf28 0 ( 0, 17) +location: 0x7f74888ecee8: +26 1 atomic rmw release 0x7f74888ecee8 0x1a82b10 17 ( 0, 26) +location: 0x1a82980: +21 1 atomic rmw acq_rel 0x1a82980 0x1 12 ( 0, 21) +location: 0x7f74888ecee8: +26 1 atomic rmw release 0x7f74888ecee8 0x1a82b10 17 ( 0, 26) +location: 0x1a82b20: +4 1 atomic write release 0x1a82b20 0 ( 0, 4) +location: 0x1a82b20: +4 1 atomic write release 0x1a82b20 0 ( 0, 4) +location: 0x7f74888ecf68: +25 1 atomic rmw relaxed 0x7f74888ecf68 0x1 16 ( 0, 25) +location: 0x7f74888ecee8: +26 1 atomic rmw release 0x7f74888ecee8 0x1a82b10 17 ( 0, 26) +location: 0x7f74888ecee8: +35 1 atomic rmw release 0x7f74888ecee8 0x1a82b20 26 ( 0, 35) +location: 0x1a82980: +30 1 atomic rmw acq_rel 0x1a82980 0x2 21 ( 0, 30) +location: 0x7f74888ecee8: +35 1 atomic rmw release 0x7f74888ecee8 0x1a82b20 26 ( 0, 35) +location: 0x1a82b30: +5 1 atomic write release 0x1a82b30 0 ( 0, 5) +location: 0x1a82b30: +5 1 atomic write release 0x1a82b30 0 ( 0, 5) +location: 0x7f74888ecf68: +34 1 atomic rmw relaxed 0x7f74888ecf68 0x2 25 ( 0, 34) +location: 0x7f74888ecee8: +35 1 atomic rmw release 0x7f74888ecee8 0x1a82b20 26 ( 0, 35) +location: 0x7f74888ecee8: +44 1 atomic rmw release 0x7f74888ecee8 0x1a82b30 35 ( 0, 44) +location: 0x1a82980: +39 1 atomic rmw acq_rel 0x1a82980 0x3 30 ( 0, 39) +location: 0x7f74888ecee8: +44 1 atomic rmw release 0x7f74888ecee8 0x1a82b30 35 ( 0, 44) +location: 0x1a82b40: +6 1 atomic write release 0x1a82b40 0 ( 0, 6) +location: 0x1a82b40: +6 1 atomic write release 0x1a82b40 0 ( 0, 6) +location: 0x7f74888ecf68: +43 1 atomic rmw relaxed 0x7f74888ecf68 0x3 34 ( 0, 43) +location: 0x7f74888ecee8: +44 1 atomic rmw release 0x7f74888ecee8 0x1a82b30 35 ( 0, 44) +location: 0x7f74888ecea8: +0 0 uninitialized relaxed 0x7f74888ecea8 0x7f74888ecf28 ( 0) +location: 0x1a82980: +48 1 atomic rmw acq_rel 0x1a82980 0x4 39 ( 0, 48) +location: 0x7f74888ecea8: +0 0 uninitialized relaxed 0x7f74888ecea8 0x7f74888ecf28 ( 0) +location: 0x7f74888ecf28: +15 1 atomic rmw release 0x7f74888ecf28 0 9 ( 0, 15) +location: 0x1a82980: +58 1 atomic rmw acq_rel 0x1a82980 0x5 48 ( 0, 58) +location: 0x7f74888ecf28: +15 1 atomic rmw release 0x7f74888ecf28 0 9 ( 0, 15) +location: 0x7f74888ecea8: +0 0 uninitialized relaxed 0x7f74888ecea8 0x7f74888ecf28 ( 0) +location: 0x7f74888ecee8: +53 1 atomic rmw release 0x7f74888ecee8 0x1a82b40 44 ( 0, 53) +location: 0x7f74888ecea8: +0 0 uninitialized relaxed 0x7f74888ecea8 0x7f74888ecf28 ( 0) +location: 0x7f74888ecf68: +52 1 atomic rmw relaxed 0x7f74888ecf68 0x4 43 ( 0, 52) +location: 0x7f74888ecea8: +66 1 atomic rmw acquire 0x7f74888ecea8 0x7f74888ecf28 0 ( 0, 66) +location: 0x1a82980: +62 1 atomic rmw acq_rel 0x1a82980 0x6 58 ( 0, 62) +location: 0x7f74888ecea8: +66 1 atomic rmw acquire 0x7f74888ecea8 0x7f74888ecf28 0 ( 0, 66) +location: 0x1a82b10: +24 1 atomic rmw release 0x1a82b10 0 3 ( 0, 24) +location: 0x1a82980: +72 1 atomic rmw acq_rel 0x1a82980 0x7 62 ( 0, 72) +location: 0x1a82b10: +24 1 atomic rmw release 0x1a82b10 0 3 ( 0, 24) +location: 0x7f74888ecea8: +66 1 atomic rmw acquire 0x7f74888ecea8 0x7f74888ecf28 0 ( 0, 66) +location: 0x7f74888ecee8: +53 1 atomic rmw release 0x7f74888ecee8 0x1a82b40 44 ( 0, 53) +location: 0x7f74888ecea8: +66 1 atomic rmw acquire 0x7f74888ecea8 0x7f74888ecf28 0 ( 0, 66) +location: 0x7f74888ecf68: +67 1 atomic rmw relaxed 0x7f74888ecf68 0x5 52 ( 0, 67) +location: 0x1a82928: +0 0 uninitialized relaxed 0x1a82928 0x1a82a00 ( 0) +location: 0x7f74888ecea8: +80 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b10 66 ( 0, 80) +location: 0x1a82980: +76 1 atomic rmw acq_rel 0x1a82980 0x8 72 ( 0, 76) +location: 0x7f74888ecea8: +80 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b10 66 ( 0, 80) +location: 0x1a82b20: +33 1 atomic rmw release 0x1a82b20 0 4 ( 0, 33) +location: 0x1a82980: +88 1 atomic rmw acq_rel 0x1a82980 0x9 76 ( 0, 88) +location: 0x1a82b20: +33 1 atomic rmw release 0x1a82b20 0 4 ( 0, 33) +location: 0x7f74888ecea8: +80 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b10 66 ( 0, 80) +location: 0x7f74888ecee8: +53 1 atomic rmw release 0x7f74888ecee8 0x1a82b40 44 ( 0, 53) +location: 0x7f74888ecea8: +80 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b10 66 ( 0, 80) +location: 0x7f74888ecf68: +81 1 atomic rmw relaxed 0x7f74888ecf68 0x4 67 ( 0, 81) +location: 0x1a82928: +83 1 atomic write relaxed 0x1a82928 0x1a82a10 ( 0, 83) +location: 0x7f74888ecea8: +96 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b20 80 ( 0, 96) +location: 0x1a82980: +92 1 atomic rmw acq_rel 0x1a82980 0xa 88 ( 0, 92) +location: 0x7f74888ecea8: +96 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b20 80 ( 0, 96) +location: 0x1a82b30: +42 1 atomic rmw release 0x1a82b30 0 5 ( 0, 42) +location: 0x1a82980: +104 1 atomic rmw acq_rel 0x1a82980 0xb 92 ( 0, 104) +location: 0x1a82b30: +42 1 atomic rmw release 0x1a82b30 0 5 ( 0, 42) +location: 0x7f74888ecea8: +96 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b20 80 ( 0, 96) +location: 0x7f74888ecee8: +53 1 atomic rmw release 0x7f74888ecee8 0x1a82b40 44 ( 0, 53) +location: 0x7f74888ecea8: +96 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b20 80 ( 0, 96) +location: 0x7f74888ecf68: +97 1 atomic rmw relaxed 0x7f74888ecf68 0x3 81 ( 0, 97) +location: 0x1a82928: +99 1 atomic write relaxed 0x1a82928 0x1a82a20 ( 0, 99) +location: 0x7f74888ecea8: +112 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b30 96 ( 0, 112) +location: 0x1a82980: +108 1 atomic rmw acq_rel 0x1a82980 0xc 104 ( 0, 108) +location: 0x7f74888ecea8: +112 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b30 96 ( 0, 112) +location: 0x1a82b40: +51 1 atomic rmw release 0x1a82b40 0 6 ( 0, 51) +location: 0x1a82980: +120 1 atomic rmw acq_rel 0x1a82980 0xd 108 ( 0, 120) +location: 0x1a82b40: +51 1 atomic rmw release 0x1a82b40 0 6 ( 0, 51) +location: 0x7f74888ecea8: +112 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b30 96 ( 0, 112) +location: 0x7f74888ecee8: +53 1 atomic rmw release 0x7f74888ecee8 0x1a82b40 44 ( 0, 53) +location: 0x7f74888ecea8: +112 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b30 96 ( 0, 112) +location: 0x7f74888ecf68: +113 1 atomic rmw relaxed 0x7f74888ecf68 0x2 97 ( 0, 113) +location: 0x1a82928: +115 1 atomic write relaxed 0x1a82928 0x1a82a30 ( 0, 115) +location: 0x7f74888ecea8: +128 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b40 112 ( 0, 128) +location: 0x1a82980: +124 1 atomic rmw acq_rel 0x1a82980 0xe 120 ( 0, 124) +location: 0x7f74888ecea8: +128 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b40 112 ( 0, 128) +location: 0x1a82b50: +7 1 atomic write release 0x1a82b50 0 ( 0, 7) +location: 0x1a82980: +137 1 atomic rmw acq_rel 0x1a82980 0xf 124 ( 0, 137) +location: 0x1a82b50: +7 1 atomic write release 0x1a82b50 0 ( 0, 7) +location: 0x7f74888ecea8: +128 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b40 112 ( 0, 128) +location: 0x7f74888ecea8: +128 1 atomic rmw acquire 0x7f74888ecea8 0x1a82b40 112 ( 0, 128) +location: 0x7f74888ecee8: +53 1 atomic rmw release 0x7f74888ecee8 0x1a82b40 44 ( 0, 53) +location: 0x1a82928: +131 1 atomic write relaxed 0x1a82928 0x1a82a40 ( 0, 131) +Program output from execution 1: +---- BEGIN PROGRAM OUTPUT ---- +test start +libcds - enqueue node m_pTail loc: 0x7f74888ecee8 +libcds - enqueue node m_pTail loc: 0x7f74888ecee8 +libcds - enqueue node m_pTail loc: 0x7f74888ecee8 +libcds - enqueue node m_pTail loc: 0x7f74888ecee8 +libcds - enqueue node m_pTail loc: 0x7f74888ecee8 +libcds - do_dequeue hode m_pHead loc: 0x7f74888ecea8 +libcds - do_dequeue hode m_pTail loc: 0x7f74888ecee8 +libcds - do_dequeue hode m_pHead loc: 0x7f74888ecea8 +libcds - do_dequeue hode m_pTail loc: 0x7f74888ecee8 +libcds - do_dequeue hode m_pHead loc: 0x7f74888ecea8 +libcds - do_dequeue hode m_pTail loc: 0x7f74888ecee8 +libcds - do_dequeue hode m_pHead loc: 0x7f74888ecea8 +libcds - do_dequeue hode m_pTail loc: 0x7f74888ecee8 +libcds - do_dequeue hode m_pHead loc: 0x7f74888ecea8 +libcds - do_dequeue hode m_pTail loc: 0x7f74888ecee8 +libcds - do_dequeue hode m_pHead loc: 0x7f74888ecea8 +libcds - do_dequeue hode m_pTail loc: 0x7f74888ecee8 +test end +---- END PROGRAM OUTPUT ---- + +ecee8: ecf28, 1a82b10, 1a82b20, 1a82b30, 1a82b40, 1a82b50 + diff --git a/pthread_test/CDSPass/addr-satcycle.cc b/pthread_test/CDSPass/addr-satcycle.cc new file mode 100755 index 0000000000000000000000000000000000000000..84aa83d8d36f97da22587bf356ce61d30a30cedc GIT binary patch literal 13888 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 literal 0 HcmV?d00001 diff --git a/pthread_test/CDSPass/compile.sh b/pthread_test/CDSPass/compile.sh new file mode 100755 index 00000000..56e324e5 --- /dev/null +++ b/pthread_test/CDSPass/compile.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +# C test cases +# clang -Xclang -load -Xclang /scratch/llvm/build/lib/libCDSPass.so -c -I/scratch/random-fuzzer/include/ /scratch/random-fuzzer/test/userprog.c + +# gcc -o userprog userprog.o -L/scratch/random-fuzzer -lmodel + + +DIR=/scratch/random-fuzzer/pthread_test/CDSPass/dummy + +export LD_LIBRARY_PATH=/scratch/random-fuzzer + +# compile with CDSPass +if [ "$2" != "" ]; then # C++ + clang++ -Xclang -load -Xclang /scratch/llvm/build/lib/libCDSPass.so -g -o $DIR/$1.o -I /scratch/random-fuzzer/include -L/scratch/random-fuzzer -lmodel $1 +else # C + clang -Xclang -load -Xclang /scratch/llvm/build/lib/libCDSPass.so -o $DIR/$1.o -I/scratch/random-fuzzer/include/ -L/scratch/random-fuzzer -lmodel $1 +fi diff --git a/pthread_test/CDSPass/condvar.cc b/pthread_test/CDSPass/condvar.cc new file mode 100755 index 0000000000000000000000000000000000000000..f4f111beea5a2a84d40ca0725e5740032e56582c GIT binary patch literal 13704 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 literal 0 HcmV?d00001 diff --git a/pthread_test/CDSPass/deadlock.cc b/pthread_test/CDSPass/deadlock.cc new file mode 100755 index 0000000000000000000000000000000000000000..76a93767766caac09977142a05227cbd433abf80 GIT binary patch literal 13208 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 CY*WYp literal 0 HcmV?d00001 diff --git a/pthread_test/CDSPass/insanesync.cc b/pthread_test/CDSPass/insanesync.cc new file mode 100755 index 0000000000000000000000000000000000000000..00bb40d76b4a5257d78a58eb1069c99b8b01c490 GIT binary patch literal 14152 zcmeHOeQ;FQb-$~XKp0pFY%n%Ws}HYs zu|!cLEaC9HD3;y9!z84maovQpIMLMDBQt=O@F6+zc;t`7O3QQ)m(tO{Ho>j>ExZ$YEb*#Cfmtamai!w*Owv z3ap&XVLrBu-NI%8$-~dbB}C1bq*EekN%MuC6EqjU@*EQ=&++kyq_>zbaxjA|AyLY2 zI`~A?r1vZ}SxFglbAarqtYf!w7IYhrq^Kwdqk{3^=1+pj&JcEnu#>b<*hwnuM|GoL zt&rE|_`nhGBO*#QO-YwR&HIr6#fz437SzWhk_JqeNhe&CA{90KIuO6NFAv&*^X|`G2YAz z5tn}1f7*YxEnuvr~=@&gW!LSU$*j` zo&jGnLpk4_LH~gn^k1Jr|3@?6zncM1a(q7X&h;V2*dF9Z;d`Kk>}EFR-o|l+YjL^5^xxjh*i1|yV(}2iAb{%7Ld=la`#Bmqvy)hjx66uWD^cnhnb88?NLRV*+ zwxhYVMQe}v!x2qm+QYlFO~D;a?U7)3UC7_w9&Be?Wo@+<2!;h*TfHvS+7hhwZx01c zS$0WNOH+ht4Ir#O(60F-t<6pKT0<~W->CTmfzlEy9BTCk%2rvC_DE|un6AVjp+yEl zYO$3@ZIQ-s&>zt1@r(qSWFKv9YGKj#U|4JRBZhWpj|A%PzMIB;8PmSLIkE=zZf&X_E1&jTCiHFXO$V(N<1Z= z)#P|Ft)(bo=By-VR0lKv(H!OAa~f$lU@?dHJ*<)7-~RDVEJwNQd4WY%Jc}j3$zB9c zfoyjO8S&AZo90mNuL}9pvTX$OHAa?+_$8vh&qiFR63pBdT$YsZA`5O^AH5dbx;~U! zaLPjlp9RNgNd?t{&rP9NuPpdH3%TzI$>qPnvtXGIG2$CZ zn3zZ+EdO`n$wi4V&c8)GxiS&w{7;E@5Mjd*fZqMP&o zLOi)B(Z>1biKlHwVjJhbLp=HvOVn`wS>nlc2_NU5BA#59@N)hM;>lGBH|KW~PcBLn zaz0EvxhBCl|JEWmYv>2hL-B`|`kUWS_4m}C-%QrjR*uBGF>|UTrwch5VVHM~Pp>7D zmm3O}t!HfL2Wa>@b>#qv+B4-+_4juz9ipVDxfg65CP8un%Dp`Ot!Jo}8$6OfMe;gz z??*g=)7P9xK-DMJ)5e3U>s_CzdUR49K7tZb z(9auhzz@Y&)ZwE7GEM?ehX)0#o|3voFFd3U4`m8=LV(22t9@Mt(jQZg56<)P^wn7P znDP46WKt=Puh&mQVM5j4P>&B3nsQxv-FVR|9_Qk=>!o&gjZa9S{KyiJ1PxU9P}WK;l&ty)fyI($|NqQ{IP65Ozy zAa!_D3hD-p0uszyPLMiWD0aHB=&@Mc;2<-e`3wboO;?WUqZp9e%$~v9fA2+_6IH!y zzdE8Eq1FW*phh224pUpHv92RA@Pxi^51g4GjTn#W$|1CBcdYKP z8jB8~x%>5Zdp<@V>!Y!z9}Lm+WFwvhy=AZxrUdsGdHTLUx&*F|)%B~flVr`ypTH16 zX;R=RCwSv=)GTqAO+r(Ev6Un=pXqO^`iR~~L)_RxooGafn-x4kbIph{L@B8;B_69D ziq)Oa>yGuDPU>&;Byv@K-xipu`pY#SdS4Zu1>d4cPmS#(NR7=qcL>8Z`K#h9vASa@ zFXOzec_G<=GtGD8uvjp;I8n-xMS&YT|fB)&o8D7@@}N> zQ>he7VG-j|J#X1UH&uK>czB#f&xrC4(jpH}#FTf0hfmT}2PeBQFY5cg1V(s@qPjAs z#`;JjR`(A4jA0QSm45b;!ohp!d9n!4G(Qu}{d{M-g!_3E?MBwd4^a>4X9=2qewrl0 z&nXG7dz2&=Kf5WRHq7#ewMK5=dD6!`Z*=zey$KQ)6Xdx_w#ZgGyR;B@w(12WiiFD zObh$+sVE+ZisP|9V)S|D46*kt4Q@Gqi}5~2F4wz`WDW!Bp6Cqmm@*WrKA~41>xn1z zpY#|Q23?0#y{=zZ4itQg)-wzijLmuHj8v1L>vtV8nx?2d1``@|c)#yDWHv^P5Nxmr zcuU+T1S>59-V9$5f*ULX-UfN5fciSkcDl0PC;=2x_Um~S1#WWtIQ8=B-aS6uyZQW8 zigdEfU+CI2f4!ssqUU_F=cAnTsq5uNG;F~WpL6Omr>(m_r9P#MiZ0DTvpou>#O%_h zgjes%6=7rP(tPUr9-0O1K8gefKnJLM)1n7{azwd^W+L%atm~o}$$aWEHo#2ZSBt`n zaZFM4S&ZW?h{fvA!?5(~(Fr+@RZ=*(o}PR%NE^ol^Knemfknc{@dU;NSsTAXCFD4k zpgE35NFv5@O2RAtB1tTjE~kW!ppz8G)xBq_*PTdnu9<-tUatC)+ z36c_BfMD*#2$y)Igw`;0jIM5@|1zBMCEx-uowu9Nzp$XZUI9W2fr^E;4T%~bW8&eC zBllSL8$B0m;H(KfdI9-N#6a|}DLr~QRoAX5bjKmF+ZfY7#a6HfX<ifD`-?5DP z#&xXS(V>Fgdyu72KEYjgte`iej&bAYC6s$jsy1=6j?WQ#hXv(z>?YLWw?V^&LSZje zLv`zgIy3tt_OqxFt&5mWus+7R;MwRDu<1b>r9mpHh~@LV@jR@tj}&D-%SUJRXy(wY z9>U&4?;0%Vwe-$oyoyI{y|ZotSq~XosN81nG!e6s6$G2TQ^35IciC!r#3(|^%pGGx zKaDr+)KQyQ^s_snQ~IQJKsNN(7{`A{<01D>;~7NyEB?CTs}*{(qOPL0s&Dy^X1UQq zeJhD>uGFto>OZeqLHqxF_4HMzG5iTk_k9>~7ypNB&no?cD*eiOq>#Mfg4%P&p|1ID z^aFaK{F|*6e_OG&;u{s(nf~c1;nEo@E7B9MoOHfG;YOD)jg|_2qo6wlO%|AXk}ef5 z1NRBKSw<=hA6Oo^#~m&)Nh!#6R1n8f=luatdXb!(OeP0G^U+}4 zMB#yP(ES)w^d{Ufg@&Y_hOOKX=+tM)B%MQ!W4rGI9lDlGPJkMqRNXBYd#YJ&Mk^-; z$L>wc(NXAFI&XG7BPz8lm&fePRB8PULrNdq!ngd<2 z%CacuivPa2%;R0(64@`h}CtX0kt}>*q7sFVpckss5XeWAq4rq~mj$J1ahqxwH7o$?#n_E1vm%mGW`2 z0@jbi7<+KyOR&7}V3j%90@g21iPQ0gjJ93&;AGdQ?s-^cPK<6j@1*047<~?~2Pa#M z`ybix8=3rmXSH$CtRv=?bo?gPpB2A3lpV89-&BqSRa`y7m zJe&i+Y_s`=QYL)BhSMu2;S)BT_J0n{+VmNQf|zF6W**OM&)vW&9VXTzvZ3%KevT}D z`DftS>h%&C;mf_+ZkDoEv*A75xMPGOP2 zofX)Cr>AHyd2=^WcL4I)Z5K6`}0BQFQmfS!VftCz18T$=%3 zfQnGPIjc;-Ig2Bed%{H#74X^%u38a(y5qVw>&Occe6bIPCAl z?Vm`vlQo3>%|R^?ZEo&_iG|bXQdOF2Q%k!a*>|?od+O^MwwhY7qdwRc(IRv|t2hHG z$v|+&$YzC`MmA(ME=N@r`)hD13Us@m^+dG|n<}amO?hNJT_5AkB;&X^sVS;ZP}gr_ z+CxF;$GD@peARXX0)0npYYmZb^SFU5`T`HfC--{A=p~S_i z`u3=K-RyJRX|vo&6W7NwZfB+E5iZVlISseLXrGRoV4;wfx;kdnwBC37(--MB;s#g% zx5{uo4NZW%XvM|i&KxyQWs|b2W^<&>geq$_Wpgo_j;`iqzka9D)iQCZOx}MJ*Wok` zcldHZ?Q_!@RlV%{}W~xNvEfb_iu_hu!EiwtIO#pXC-^>Y`odjlMKJ z*&11{A_Cf7l75qrdD=UhG0s3EVUsq>7;gLp!)?sd(i#bRaG7sq#J_`icCe%aC!ZsoTMJ;6pX zbuZQXxe2@02xSO_E-iX+XOVd@zcpjd5-Y*~ zj?jJ{OHXQFRi5JmH+{cep098a57M=UJHXJH29{+WYIA&oa+0w(k?Wu-#b+}_a1`At z?K^UOT+|_e^_-htKjnHOV0J$ubMce*@f;sGhWBJnSeu}EV5#iV9y?qf*5QdIDrGO< zqrGH+aL!g?8_WI*I&>x@^Ox`2SHwZnDxS)8`K6wuTOg-19?8r1a<4cjsuA{79MX~H z7ckp_2(_uSm+$Z0!d})>w!5^K_+!F;tw>OwQymia@?4AT$;NK~cfhDk9DRDFAn9Jj)9kPFkr?L;oTSQYa?|CP{8NZn?dAJ~ zSJ-co2b97<<}2;{ZT9jUvsWDa$!bV_=?BR_C+wyFL;=*!AuF1Z=7N(q5i}OngrJ_hCzYU)sy_9{G1a^!`Ud zOed-SDErYq$gKIxbD^na+$^PUa?|}+*5f0aJ#%j}Roy0`{%H-;PSQ^ywB|3*nfl$P zl`N-BL)uCHDk6l*`pfr@0k^5)HA(7ex6eW5l)qh1+J{n>W`uMpNJ`feW!_vM9-VX` wg+SM`t-;3fbY$PP>J{E*a;g}>UjTa_ezN>>{v>g>{I}d?+TUjD@b>)w2Lhc&cK`qY literal 0 HcmV?d00001 diff --git a/pthread_test/CDSPass/iriw.cc b/pthread_test/CDSPass/iriw.cc new file mode 100755 index 0000000000000000000000000000000000000000..8042a13b55b3f3ce2d953a162afafbcbb4fba430 GIT binary patch literal 14064 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 literal 0 HcmV?d00001 diff --git a/pthread_test/CDSPass/uninit.cc b/pthread_test/CDSPass/uninit.cc new file mode 100755 index 0000000000000000000000000000000000000000..f6b682f4ea56417a5e0d8eb53a7d3ec3eb5de0b7 GIT binary patch literal 21872 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 literal 0 HcmV?d00001 diff --git a/pthread_test/addr-satcycle.cc b/pthread_test/addr-satcycle.cc new file mode 100644 index 00000000..a3d970b9 --- /dev/null +++ b/pthread_test/addr-satcycle.cc @@ -0,0 +1,69 @@ +/** + * @file addr-satcycle.cc + * @brief Address-based satisfaction cycle test + * + * This program has a peculiar behavior which is technically legal under the + * current C++ memory model but which is a result of a type of satisfaction + * cycle. We use this as justification for part of our modifications to the + * memory model when proving our model-checker's correctness. + */ + +#include +#include +#include + +#include "model-assert.h" + +using namespace std; + +atomic_int x[2], idx, y; + +int r1, r2, r3; /* "local" variables */ + +static void *a(void *obj) +{ + r1 = idx.load(memory_order_relaxed); + x[r1].store(0, memory_order_relaxed); + + /* Key point: can we guarantee that &x[0] == &x[r1]? */ + r2 = x[0].load(memory_order_relaxed); + y.store(r2); + return NULL; +} + +static void *b(void *obj) +{ + r3 = y.load(memory_order_relaxed); + idx.store(r3, memory_order_relaxed); + return NULL; +} + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2; + + atomic_init(&x[0], 1); + atomic_init(&idx, 0); + atomic_init(&y, 0); + + printf("Main thread: creating 2 threads\n"); + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + printf("Main thread is finished\n"); + + printf("r1 = %d\n", r1); + printf("r2 = %d\n", r2); + printf("r3 = %d\n", r3); + + /* + * This condition should not be hit because it only occurs under a + * satisfaction cycle + */ + bool cycle = (r1 == 1 && r2 == 1 && r3 == 1); + MODEL_ASSERT(!cycle); + + return 0; +} diff --git a/pthread_test/bug1.cc b/pthread_test/bug1.cc new file mode 100644 index 00000000..16d2b594 --- /dev/null +++ b/pthread_test/bug1.cc @@ -0,0 +1,74 @@ +/** + * @file iriw.cc + * @brief Independent read and independent write test + */ + +#include +#include +#include + +#define N 14 +//#include "wildcard.h" +//#include "model-assert.h" + +using namespace std; + +std::atomic_int x, y; +int r1, r2, r3, r4; /* "local" variables */ + +static void *a(void *obj) +{ +// x.store(1, memory_order_seq_cst); + return NULL; +} + + +static void *b(void *obj) +{ + y.store(1, memory_order_seq_cst); + return NULL; +} + +static void *c(void *obj) +{ + r1 = x.load(memory_order_acquire); + r2 = y.load(memory_order_seq_cst); + return NULL; +} + +static void *d(void *obj) +{ + r3 = y.load(memory_order_acquire); + r4 = x.load(memory_order_seq_cst); + return NULL; +} + + +int user_main(int argc, char **argv) +{ + pthread_t threads[20]; + + atomic_init(&x, 0); + atomic_init(&y, 0); + + printf("Main thread: creating %d threads\n", N); + + for (int i = 0; i< N; i++) + pthread_create(&threads[i],NULL, &a, NULL); + + for (int i=0; i + +#include "pthread.h" +#include "librace.h" +#include "stdatomic.h" +#include "mutex.h" +#include + +cdsc::mutex * m; +cdsc::condition_variable *v; +int shareddata; + +static void *a(void *obj) +{ + m->lock(); + while(load_32(&shareddata)==0) + v->wait(*m); + m->unlock(); + return NULL; +} + +static void *b(void *obj) +{ + m->lock(); + store_32(&shareddata, (unsigned int) 1); + v->notify_all(); + m->unlock(); + return NULL; +} + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2; + store_32(&shareddata, (unsigned int) 0); + m=new cdsc::mutex(); + v=new cdsc::condition_variable(); + + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + return 0; +} diff --git a/pthread_test/deadlock.cc b/pthread_test/deadlock.cc new file mode 100644 index 00000000..43828192 --- /dev/null +++ b/pthread_test/deadlock.cc @@ -0,0 +1,47 @@ +#include +#include + +#include "librace.h" + +pthread_mutex_t x; +pthread_mutex_t y; +uint32_t shared = 0; + +static void *a(void *obj) +{ + pthread_mutex_lock(&x); + pthread_mutex_lock(&y); + printf("shared = %u\n", load_32(&shared)); + pthread_mutex_unlock(&y); + pthread_mutex_unlock(&x); + return NULL; +} + +static void *b(void *obj) +{ + pthread_mutex_lock(&y); + pthread_mutex_lock(&x); + store_32(&shared, 16); + printf("write shared = 16\n"); + pthread_mutex_unlock(&x); + pthread_mutex_unlock(&y); + return NULL; +} + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2; + + pthread_mutex_init(&x, NULL); + pthread_mutex_init(&y, NULL); + + printf("Main thread: creating 2 threads\n"); + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + printf("Main thread is finished\n"); + + return 0; +} diff --git a/pthread_test/insanesync.cc b/pthread_test/insanesync.cc new file mode 100644 index 00000000..bcc34ad7 --- /dev/null +++ b/pthread_test/insanesync.cc @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#include "librace.h" +#include "model-assert.h" + +using namespace std; + +atomic_int x, y; +atomic_intptr_t z, z2; + +int r1, r2, r3; /* "local" variables */ + +/** + This example illustrates a self-satisfying cycle involving + synchronization. A failed synchronization creates the store that + causes the synchronization to fail. + + The C++11 memory model nominally allows r1=0, r2=1, r3=5. + + This example is insane, we don't support that behavior. +*/ + + +static void *a(void *obj) +{ + z.store((intptr_t)&y, memory_order_relaxed); + r1 = y.fetch_add(1, memory_order_release); + z.store((intptr_t)&x, memory_order_relaxed); + r2 = y.fetch_add(1, memory_order_release); + return NULL; +} + + +static void *b(void *obj) +{ + r3 = y.fetch_add(1, memory_order_acquire); + intptr_t ptr = z.load(memory_order_relaxed); + z2.store(ptr, memory_order_relaxed); + return NULL; +} + +static void *c(void *obj) +{ + atomic_int *ptr2 = (atomic_int *)z2.load(memory_order_relaxed); + (*ptr2).store(5, memory_order_relaxed); + return NULL; +} + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2, t3; + + atomic_init(&x, 0); + atomic_init(&y, 0); + atomic_init(&z, (intptr_t) &x); + atomic_init(&z2, (intptr_t) &x); + + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + pthread_create(&t3,NULL, &c, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + pthread_join(t3,NULL); + + printf("r1=%d, r2=%d, r3=%d\n", r1, r2, r3); + + return 0; +} diff --git a/pthread_test/iriw.cc b/pthread_test/iriw.cc new file mode 100644 index 00000000..42ba9364 --- /dev/null +++ b/pthread_test/iriw.cc @@ -0,0 +1,71 @@ +/** + * @file iriw.cc + * @brief Independent read and independent write test + */ + +#include +#include +#include + +#include "wildcard.h" +#include "model-assert.h" + +using namespace std; + +atomic_int x, y; +int r1, r2, r3, r4; /* "local" variables */ + +static void *a(void *obj) +{ + x.store(1, memory_order_seq_cst); + return new int(1); +} + +static void *b(void *obj) +{ + y.store(1, memory_order_seq_cst); + return new int(2); +} + +static void *c(void *obj) +{ + r1 = x.load(memory_order_acquire); + r2 = y.load(memory_order_seq_cst); + return new int(3); +} + +static void *d(void *obj) +{ + r3 = y.load(memory_order_acquire); + r4 = x.load(memory_order_seq_cst); + return new int(4); +} + + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2, t3, t4; + + atomic_init(&x, 0); + atomic_init(&y, 0); + + printf("Main thread: creating 4 threads\n"); + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + pthread_create(&t3,NULL, &c, NULL); + pthread_create(&t4,NULL, &d, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + pthread_join(t3,NULL); + pthread_join(t4,NULL); + printf("Main thread is finished\n"); + + /* + * This condition should not be hit if the execution is SC */ + bool sc = (r1 == 1 && r2 == 0 && r3 == 1 && r4 == 0); + printf("r1 = %d, r2 = %d, r3 = %d and r4 = %d\n", r1, r2, r3, r4); + MODEL_ASSERT(!sc); + + return 0; +} diff --git a/pthread_test/iriw_wildcard.cc b/pthread_test/iriw_wildcard.cc new file mode 100644 index 00000000..adea420f --- /dev/null +++ b/pthread_test/iriw_wildcard.cc @@ -0,0 +1,70 @@ +/** + * @file iriw.cc + * @brief Independent read and independent write test + */ + +#include +#include +#include + +#include "wildcard.h" +#include "model-assert.h" + +using namespace std; + +atomic_int x, y; +int r1, r2, r3, r4; /* "local" variables */ + +static void *a(void *obj) +{ + x.store(1, wildcard(1)); + return NULL; +} + +static void *b(void *obj) +{ + y.store(1, wildcard(2)); + return NULL; +} + +static void *c(void *obj) +{ + r1 = x.load(wildcard(3)); + r2 = y.load(wildcard(4)); + return NULL; +} + +static void *d(void *obj) +{ + r3 = y.load(wildcard(5)); + r4 = x.load(wildcard(6)); + return NULL; +} + + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2, t3, t4; + + atomic_init(&x, 0); + atomic_init(&y, 0); + + printf("Main thread: creating 4 threads\n"); + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + pthread_create(&t3,NULL, &c, NULL); + pthread_create(&t4,NULL, &d, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + pthread_join(t3,NULL); + pthread_join(t4,NULL); + printf("Main thread is finished\n"); + + /* + * This condition should not be hit if the execution is SC */ + bool sc = (r1 == 1 && r2 == 0 && r3 == 1 && r4 == 0); + //MODEL_ASSERT(!sc); + + return 0; +} diff --git a/pthread_test/mo-satcycle.cc b/pthread_test/mo-satcycle.cc new file mode 100644 index 00000000..d0a60559 --- /dev/null +++ b/pthread_test/mo-satcycle.cc @@ -0,0 +1,71 @@ +/** + * @file mo-satcycle.cc + * @brief MO satisfaction cycle test + * + * This program has a peculiar behavior which is technically legal under the + * current C++ memory model but which is a result of a type of satisfaction + * cycle. We use this as justification for part of our modifications to the + * memory model when proving our model-checker's correctness. + */ + +#include +#include +#include + +#include "model-assert.h" + +using namespace std; + +atomic_int x, y; +int r0, r1, r2, r3; /* "local" variables */ + +static void *a(void *obj) +{ + y.store(10, memory_order_relaxed); + x.store(1, memory_order_release); + return NULL; +} + +static void *b(void *obj) +{ + r0 = x.load(memory_order_relaxed); + r1 = x.load(memory_order_acquire); + y.store(11, memory_order_relaxed); + return NULL; +} + +static void *c(void *obj) +{ + r2 = y.load(memory_order_relaxed); + r3 = y.load(memory_order_relaxed); + if (r2 == 11 && r3 == 10) + x.store(0, memory_order_relaxed); + return NULL; +} + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2, t3; + + atomic_init(&x, 0); + atomic_init(&y, 0); + + printf("Main thread: creating 3 threads\n"); + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + pthread_create(&t3,NULL, &c, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + pthread_join(t3,NULL); + printf("Main thread is finished\n"); + + /* + * This condition should not be hit because it only occurs under a + * satisfaction cycle + */ + bool cycle = (r0 == 1 && r1 == 0 && r2 == 11 && r3 == 10); + MODEL_ASSERT(!cycle); + + return 0; +} diff --git a/pthread_test/normal_compile.sh b/pthread_test/normal_compile.sh new file mode 100755 index 00000000..56cba5a5 --- /dev/null +++ b/pthread_test/normal_compile.sh @@ -0,0 +1,9 @@ +#g++ -o test.o test.cc -Wall -g -O3 -I.. -I../include -L.. -lmodel + +export LD_LIBRARY_PATH=/scratch/random-fuzzer + +if [ "$2" != "" ]; then + g++ -o "$1.o" $1 -Wall -g -O3 -I.. -I../include -L.. -lmodel +else + gcc -o "$1.o" $1 -Wall -g -O3 -I.. -I../include -L.. -lmodel +fi diff --git a/pthread_test/protect/mutex_test.cc b/pthread_test/protect/mutex_test.cc new file mode 100644 index 00000000..9a84b1d1 --- /dev/null +++ b/pthread_test/protect/mutex_test.cc @@ -0,0 +1,41 @@ +#include + +#include "threads.h" +#include "librace.h" +#include "stdatomic.h" +#include + +int shareddata; +pthread_mutex_t m; + +static void* a(void *obj) +{ + int i; + for(i=0;i<2;i++) { + if ((i%2)==0) { + pthread_mutex_lock(&m); + store_32(&shareddata,(unsigned int)i); + printf("shareddata: %d\n", shareddata); + pthread_mutex_unlock(&m); + } else { + while(!pthread_mutex_trylock(&m)) + thrd_yield(); + store_32(&shareddata,(unsigned int)i); + printf("shareddata: %d\n", shareddata); + pthread_mutex_unlock(&m); + } + } +} + +int user_main(int argc, char **argv) +{ + thrd_t t1, t2; + pthread_mutex_init(&m, NULL); + + thrd_create(&t1, (thrd_start_t)&a, NULL); + thrd_create(&t2, (thrd_start_t)&a, NULL); + + thrd_join(t1); + thrd_join(t2); + return 0; +} diff --git a/pthread_test/pthread_mutex_test.cc b/pthread_test/pthread_mutex_test.cc new file mode 100644 index 00000000..55bea220 --- /dev/null +++ b/pthread_test/pthread_mutex_test.cc @@ -0,0 +1,69 @@ +#include +#include +#define NTHREADS 2 +void *thread_function(void *); +//pthread_mutex_t mutex1; + +int counter=0; + +class Box { +public: +// int counter; + + static Box& getInstance() { + static Box instance; + return instance; + } + + void addone() { + pthread_mutex_lock(&pool_mutex); + counter++; + pthread_mutex_unlock(&pool_mutex); + } + +private: + Box() { + pthread_mutex_init(&pool_mutex, NULL); + counter = 0; + } + pthread_mutex_t pool_mutex; +}; + +int user_main(int argv, char **argc) +{ +// void *dummy = NULL; +// pthread_mutex_init(&mutex1, NULL); /* PTHREAD_MUTEX_INITIALIZER;*/ + +// pthread_t thread_id[NTHREADS]; +// int i, j; + + Box::getInstance().addone(); + +/* for(i=0; i < NTHREADS; i++) + { + pthread_create( &thread_id[i], NULL, &thread_function, NULL ); + } + + for(j=0; j < NTHREADS; j++) + { + pthread_join( thread_id[j], NULL); + } +*/ + + printf("Final counter value: %d\n", counter); + /* + for (i=0;i +#include +#include +#include + +#define N 4 +//#include "wildcard.h" +//#include "model-assert.h" + +using namespace std; + +atomic x(1); +atomic y(1); + +int r1, r2, r3, r4; /* "local" variables */ + +static void *a(void *obj) +{ + x.store(1, memory_order_relaxed); + y.store(1, memory_order_relaxed); + + return new int(1); +} + + +static void *b(void *obj) +{ + y.store(1, memory_order_relaxed); + + return new int(2); +} + +static void *c(void *obj) +{ + r1 = x.load(memory_order_acquire); + r2 = y.load(memory_order_relaxed); + + return new int(3); +} + +static void *d(void *obj) +{ + r3 = y.load(memory_order_acquire); + r4 = x.load(memory_order_relaxed); + + return new int(4); +} + + +int main(int argc, char **argv) +{ + printf("Main thread starts\n"); + + x.store(2, memory_order_relaxed); + y.store(2, memory_order_relaxed); + + r1 = x.load(memory_order_relaxed); + printf("%d\n", r1); + +// x.compare_exchange_strong(r1, r2); +// r3 = x.load(memory_order_relaxed); + +// printf("%d\n", r3); + + printf("Main thread is finished\n"); + + return 0; +} diff --git a/pthread_test/uninit.cc b/pthread_test/uninit.cc new file mode 100644 index 00000000..075e2acf --- /dev/null +++ b/pthread_test/uninit.cc @@ -0,0 +1,57 @@ +/** + * @file uninit.cc + * @brief Uninitialized loads test + * + * This is a test of the "uninitialized loads" code. While we don't explicitly + * initialize y, this example's synchronization pattern should guarantee we + * never see it uninitialized. + */ +#include +#include +#include + +//#include "librace.h" + +std::atomic_int x; +std::atomic_int y; + +static void *a(void *obj) +{ + int flag = x.load(std::memory_order_acquire); + printf("flag: %d\n", flag); + if (flag == 2) + printf("Load: %d\n", y.load(std::memory_order_relaxed)); + return NULL; +} + +static void *b(void *obj) +{ + printf("fetch_add: %d\n", x.fetch_add(1, std::memory_order_relaxed)); + return NULL; +} + +static void *c(void *obj) +{ + y.store(3, std::memory_order_relaxed); + x.store(1, std::memory_order_release); + return NULL; +} + +int user_main(int argc, char **argv) +{ + pthread_t t1, t2, t3; + + std::atomic_init(&x, 0); + + printf("Main thread: creating 3 threads\n"); + pthread_create(&t1,NULL, &a, NULL); + pthread_create(&t2,NULL, &b, NULL); + pthread_create(&t3,NULL, &c, NULL); + + pthread_join(t1,NULL); + pthread_join(t2,NULL); + pthread_join(t3,NULL); + printf("Main thread is finished\n"); + + return 0; +} -- 2.34.1