Skip to content

Instantly share code, notes, and snippets.

@retep998
Created June 29, 2014 00:42
Show Gist options
  • Save retep998/224bfb130448e086df76 to your computer and use it in GitHub Desktop.
Save retep998/224bfb130448e086df76 to your computer and use it in GitHub Desktop.
This causes a segfault
#![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