xavierd / clang_complete

Vim plugin that use clang for completing C/C++ code.
http://www.vim.org/scripts/script.php?script_id=3302
1.96k stars 308 forks source link

segfault while completing #70

Closed ranousse closed 13 years ago

ranousse commented 13 years ago

include <CGAL/Simple_cartesian.h>

include <CGAL/IO/Polyhedron_iostream.h>

include

include

// using std::cout; // using std::endl; // using std::find_if; // using std::mem_fun_ref;

typedef CGAL::Simple_cartesian Kernel; typedef CGAL::Polyhedron_3 Polyhedron; typedef Polyhedron::Vertex_iterator Vertex_iterator; typedef Polyhedron::Halfedge Halfedge; typedef Polyhedron::Halfedge_iterator Halfedge_iterator;

int main() { Polyhedron P; std:: }

then vim crashes.

Actually cgal is a library containing a lot of template code. The temporary files are so huge that they fill /tmp. I thinks it's the cause of sefgfault.

Silex commented 13 years ago

Not much we can do. Produce a stack trace and see what crashes.

ranousse commented 13 years ago

Do you mean that it is clang that handles writting the cache file. And you have no way to know if the command worked or not.

Do you think it could have sense that the cache file would be in the project directory instead of /tmp (or could be customized)

Do you know if clang propose something to exclude some #include from completing and cache generation. I often use mathematical library (cgal, eigen that uses templates a lot of template code and most of the time clang fail to complete in this case). For me in this case the most useful would be to ignore #include cgall and #include eigen. (but I've absolutely no idea if something like this is possible)

(I don't all this very well, so I'm not sure at all it's possible or even a good idea)

Other remark (entirely different)

the let clang_library_path = ... does not understand things like ~/login/... (tilde) or $HOME If it was possible it could be interesting for me because when I copy my config files from a computer to another I need now to fix the vimrc after the copy.

And sorry about stack trace but I'm not very aware of debugging tools and don't know what command is used for this.

ranousse commented 13 years ago

oups I was wrong, the problem has nothing to do with /tmp full.

Silex commented 13 years ago

It depends on a lot of stuffs. First of all do you use libclang or clang (is g:clang_use_library set to 1 or 0)? If it was 1, try setting it to 0 so there's no caching going on.

ranousse commented 13 years ago

And the only thing I can say now is that vim crashes with the message LLVM ERROR: IO failure on output stream

Then I have to remove the preamble.pch files to allow vim to start without warning after that it seems.

Silex commented 13 years ago

Does clang_complete work with "hello world"?

ranousse commented 13 years ago

And finally it was a problem with not enough space available. But clang complete has to worry about this. I was responsible of the problem: my / partition was already almost full (without clang cache file). Clang cache file is not as big as I thought at first sight (only 42M). You can consider the issue as closed. I'm sorry to have bothered you with a problem that was not in the plugin.

Silex commented 13 years ago

But clang complete has to worry about this

No, out of disk space is not an issue within clang_complete imho.

ranousse commented 13 years ago

Oups it was a typo, I wanted to write clang_complete has NOT to worry about this.

Le 22/08 - 06:29, Silex wrote :

But clang complete has to worry about this

No, out of disk space is not an issue within clang_complete imho.

Reply to this email directly or view it on GitHub: https://github.com/Rip-Rip/clang_complete/issues/70#issuecomment-1870072