Created
June 29, 2014 00:42
-
-
Save retep998/224bfb130448e086df76 to your computer and use it in GitHub Desktop.
This causes a segfault
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#![feature(phase)] | |
#[phase(plugin)] | |
extern crate green; | |
use std::io::{Acceptor, Listener, TcpListener, TcpStream}; | |
use std::io::timer::sleep; | |
green_start!(main) | |
fn main() { | |
spawn(proc() listener()); | |
sleep(1000); | |
spawn(proc() connector()); | |
} | |
fn listener() { | |
let listen = TcpListener::bind("0.0.0.0", 273); | |
let mut accept = listen.listen(); | |
let tcp = accept.accept().unwrap(); | |
let tcp2 = tcp.clone(); | |
spawn(proc() reader(tcp2)); | |
sleep(100);// Make sure reader is already reading | |
let _ = tcp.clone();// This overwrites data->handle to 0 | |
} | |
fn reader(mut tcp: TcpStream) { | |
println!("If you do not see success after this, then this failed"); | |
let _ = tcp.read_u8().unwrap(); | |
println!("Success!"); | |
} | |
fn connector() { | |
let mut tcp = TcpStream::connect("127.0.0.1", 273).unwrap(); | |
sleep(200);//Wait for handle->data to be 0 | |
tcp.write_u8(0).unwrap(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment