From a2ce532337442e1e9a4efb3d10945dacf359ea20 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 29 Jun 2011 10:32:58 -0700 Subject: [PATCH] rt: Remove the lock around upcall_vec_append. Add a test case. Closes #156. --- src/rt/rust_upcall.cpp | 1 - src/test/run-pass/vec-ivec-deadlock.rs | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 src/test/run-pass/vec-ivec-deadlock.rs diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp index 33c578e93a53..5a556a8e12b8 100644 --- a/src/rt/rust_upcall.cpp +++ b/src/rt/rust_upcall.cpp @@ -470,7 +470,6 @@ upcall_vec_append(rust_task *task, type_desc *t, type_desc *elem_t, rust_vec **dst_ptr, rust_vec *src, bool skip_null) { LOG_UPCALL_ENTRY(task); - scoped_lock with(task->kernel->scheduler_lock); rust_vec *dst = *dst_ptr; uintptr_t need_copy; size_t n_src_bytes = skip_null ? src->fill - 1 : src->fill; diff --git a/src/test/run-pass/vec-ivec-deadlock.rs b/src/test/run-pass/vec-ivec-deadlock.rs new file mode 100644 index 000000000000..fe095259e5d7 --- /dev/null +++ b/src/test/run-pass/vec-ivec-deadlock.rs @@ -0,0 +1,7 @@ +// xfail-stage0 + +fn main() { + auto a = ~[ 1, 2, 3, 4, 5 ]; + auto b = [ a, a ]; + b += b; +}