Skip to content

internal compiler error: borrow-vec associated with bad sty: &ty_err #15663

Closed
@benanders

Description

@benanders

So I came across this, and the message I received asked me to create a bug report.

Mac OSX 10.9.3, x86_64

Original error:

rustc -L /usr/local/lib/glfw -L lib/glfw-rs/lib -L lib/gl-rs/lib -L lib/cgmath-rs/lib -O --out-dir=target src/main.rs
src/main.rs:79:14: 79:22 error: internal compiler error: borrow-vec associated with bad sty: &ty_err
src/main.rs:79  let size = (vertices.len() * mem::size_of::<GLfloat>()) as GLsizeiptr;
                            ^~~~~~~~
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'Box<Any>', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/libsyntax/diagnostic.rs:112

rustc version is rustc 0.11.0-nightly (b57d272e9908e164a72bd1a688141031705e1208 2014-07-11 01:11:36 +0000)

Code:

#![feature(globs)]

extern crate native;
extern crate glfw;
extern crate cgmath;
extern crate gl;

use glfw::Context;
use gl::types::*;
use std::mem;

mod shader;


#[start]
fn start(argc: int, argv: *const *const u8) -> int {
    native::start(argc, argv, main)
}


fn main() {
    // Init
    let context = glfw::init(glfw::FAIL_ON_ERRORS).unwrap();

    // Set window hints to load OpenGL 3.2 on OSX
    context.window_hint(glfw::ContextVersion(3, 2));
    context.window_hint(glfw::OpenglForwardCompat(true));
    context.window_hint(glfw::OpenglProfile(glfw::OpenGlCoreProfile));

    // Create a window
    let (window, events) = context.create_window(1100, 775, "Post Processing Effects",
        glfw::Windowed).expect("Failed to create window!");

    window.set_key_polling(true);
    window.set_size_polling(true);
    window.make_current();

    gl::load_with(|s| context.get_proc_address(s));


    // Shaders
    let mut shader = shader::Shader::new();
    shader.attach_from_file("vertex_shader.glsl", gl::VERTEX_SHADER);
    shader.attach_from_file("fragment_shader.glsl", gl::FRAGMENT_SHADER);
    shader.link();
    shader.bind_frag_color_name("color");
    shader.set();


    // VAO and VBO
    let vertices = [
        -0.5, -0.5,
        0.5, -0.5,
        0.0, 0.5,
    ];

    let mut vao = 0;
    let mut vbo = 0;

    unsafe {
        // Create a vertex array object
        gl::GenVertexArrays(1, &mut vao);
        gl::BindVertexArray(vao);

        // Create a vertex buffer object
        gl::GenBuffers(1, &mut vbo);
        gl::BindBuffer(gl::ARRAY_BUFFER, vbo);
    }

    // Calculate the size of the vertex data in bytes
    let size = (vertices.len() * mem::size_of::<GLfloat>()) as GLsizeiptr;

    unsafe {
        gl::BufferData(
            gl::ARRAY_BUFFER,
            size,
            mem::transmute(&(vertices[0])),
            gl::STATIC_DRAW
        );
    }


    // Shader attributes
    shader.layout_attribs("position_in");


    // Main loop
    while !window.should_close() {
        context.poll_events();
        for (_, event) in glfw::flush_messages(&events) {
            match event {
                glfw::KeyEvent(glfw::KeyEscape, _, glfw::Press, _) => {
                    window.set_should_close(true);
                },
                _ => {},
            }
        }

        gl::ClearColor(0.0, 0.0, 0.0, 1.0);
        gl::Clear(gl::COLOR_BUFFER_BIT);

        let count = (vertices.len() / 2) as i32;
        gl::DrawArrays(gl::TRIANGLES, 0, count);

        window.swap_buffers();
    }
}

I hope this is enough information, I can provide more if needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions