Package: libllvm3.4
Version: 1:3.4~+rc1-1
Severity: normal
File: libLLVM-3.4.so.1
I'm using YouCompleteMe (vim plugin) for C programming.
During writing a comment the plugin crashes; this is reproducible with a CLI
call.
I know that the sources are botched, I'm currently rewriting large parts.
clang -cc1 -fsyntax-only -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-
gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-
gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8
/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include -code-completion-
at config.h:43:30 config.h
In file included from config.h:24:
../booth.h:105:14: error: duplicate member 'owner'
boothc_site owner;
^
../booth.h:103:11: note: previous declaration is here
uint32_t owner;
^
../booth.h:131:8: error: redefinition of 'paxos_control_data'
struct paxos_control_data {
^
../booth.h:116:8: note: previous definition is here
struct paxos_control_data {
^
../booth.h:139:20: error: field has incomplete type 'struct ticket_msg'
struct ticket_msg ticket;
^
../booth.h:139:9: note: forward declaration of 'struct ticket_msg'
struct ticket_msg ticket;
^
../booth.h:145:20: error: field has incomplete type 'struct ticket_msg'
struct ticket_msg ticket;
^
../booth.h:139:9: note: forward declaration of 'struct ticket_msg'
struct ticket_msg ticket;
^
../booth.h:149:8: error: redefinition of 'ticket_data'
struct ticket_data {
^
../booth.h:98:8: note: previous definition is here
struct ticket_data {
^
../booth.h:153:1: error: type name does not allow storage class to be specified
typedef enum {
^
../booth.h:160:1: error: type name does not allow storage class to be specified
typedef enum {
^
../booth.h:183:1: error: type name does not allow storage class to be specified
static inline void init_header(struct boothc_header *h, int cmd,
^
../booth.h:183:8: error: type name does not allow function specifier to be
specified
static inline void init_header(struct boothc_header *h, int cmd,
^
../booth.h:184:29: error: expected ';' at end of declaration list
int result, int data_len)
^
;
0 libLLVM-3.4.so.1 0x00007f9ae1af6562 llvm::sys::PrintStackTrace(_IO_FILE*) +
34
1 libLLVM-3.4.so.1 0x00007f9ae1af634c
2 libpthread.so.0 0x00007f9ae0a11210
3 clang 0x0000000001171a7f clang::Lexer::Lex(clang::Token&) + 31
4 clang 0x00000000011b37af clang::Preprocessor::Lex(clang::Token&)
+ 159
5 clang 0x000000000091dc3d
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier) + 573
6 clang 0x000000000091e19e
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) + 942
7 clang 0x0000000000921fb3
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 259
8 clang 0x0000000000922616
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 182
9 clang 0x00000000009198bb clang::ParseAST(clang::Sema&, bool,
bool) + 283
10 clang 0x000000000066fe39 clang::FrontendAction::Execute() + 169
11 clang 0x0000000000650915
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 293
12 clang 0x000000000063b936
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1638
13 clang 0x0000000000637748 cc1_main(char const**, char const**,
char const*, void*) + 1144
14 clang 0x0000000000635eaf main + 7247
15 libc.so.6 0x00007f9adf82b995 __libc_start_main + 245
16 clang 0x00000000006367df
Stack dump:
0. Program arguments: clang -cc1 -fsyntax-only -I/usr/include/c++/4.8
-I/usr/include/x86_64-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward
-I/usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/local/include
-I/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed -I/usr/include/x86_64-linux-
gnu -I/usr/include -code-completion-at config.h:43:30 config.h
1. <unknown> parser at unknown location
/home/marek/bin/clang-complete-at: Zeile 19: 23068 Speicherzugriffsfehler
clang -cc1 -fsyntax-only -I/usr/include/c++/4.8 -I/usr/include/x86_64-linux-
gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/x86_64-linux-
gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.8
/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include "$@" -code-
completion-at "$I" "${I%%:*}"
-- System Information:
Debian Release: jessie/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1,
'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 3.11-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_AT.UTF-8, LC_CTYPE=de_AT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libllvm3.4:amd64 depends on:
ii libc6 2.17-93
ii libffi6 3.0.13-4
ii libgcc1 1:4.8.2-1
ii libstdc++6 4.8.2-1
ii libtinfo5 5.9+20130608-1
ii multiarch-support 2.17-93
libllvm3.4:amd64 recommends no packages.
libllvm3.4:amd64 suggests no packages.
-- no debconf information
/*
* Copyright (C) 2011 Jiaju Zhang <[email protected]>
* Copyright (C) 2013 Philipp Marek <[email protected]>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _CONFIG_H
#define _CONFIG_H
#include <stdint.h>
#include "booth.h"
#include "config.h"
#include "paxos_lease.h"
#include "transport.h"
#define MAX_NODES 16
#define TICKET_ALLOC 16
#define NO_OWNER (-1)
struct ticket_config {
boothc_ticket name;
/* How many seconds to hold it */
int expiry;
/* Who has it. */
int owner; struct booth_node *owner; ??
/** Timestamp of expiration.
*
time_t expires;
int ballot;
pl_handle_t handle;
int weight[MAX_NODES];
};
struct booth_config {
char name[BOOTH_NAME_LEN];
int node_count;
int ticket_count;
transport_layer_t proto;
uint16_t port;
struct booth_node node[MAX_NODES];
struct ticket_config ticket[0];
};
struct booth_config *booth_conf;
int read_config(const char *path);
int check_config(int type);
int find_site_in_config(unsigned char *site, struct booth_node **node);
const char *type_to_string(int type);
static inline struct booth_transport const *transport(void) {
return booth_transport + booth_conf->proto;
}
#endif /* _CONFIG_H */
/*
* Copyright (C) 2011 Jiaju Zhang <[email protected]>
* Copyright (C) 2013 Philipp Marek <[email protected]>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _BOOTH_H
#define _BOOTH_H
#include <stdint.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define BOOTH_LOG_DUMP_SIZE (1024*1024)
#define BOOTH_RUN_DIR "/var/run/booth/"
#define BOOTH_LOG_DIR "/var/log"
#define BOOTH_LOGFILE_NAME "booth.log"
#define BOOTH_DEFAULT_CONF "/etc/booth/booth.conf"
#define DAEMON_NAME "booth"
#define BOOTH_NAME_LEN 63
#define BOOTH_PATH_LEN 127
#define BOOTH_PROTO_FAMILY AF_INET
#define BOOTHC_MAGIC 0x5F1BA08C
#define BOOTHC_VERSION 0x00010002
struct boothc_header {
/** BOOTHC_MAGIC */
uint32_t magic;
/** BOOTHC_VERSION */
uint32_t version;
/** Packet source; nodeid. See add_node(). */
uint32_t from;
/** Length including header */
uint32_t length;
/** The command, see cmd_request_t. cmp paxos_state_t ?? */
uint32_t cmd;
/** Result of operation. 0 == OK */
uint32_t result;
char data[0];
} __attribute__((packed));
typedef unsigned char boothc_site [BOOTH_NAME_LEN];
typedef unsigned char boothc_ticket[BOOTH_NAME_LEN];
struct booth_node {
int nodeid;
int type;
int local;
int role;
char addr_string[BOOTH_NAME_LEN];
int tcp_fd;
unsigned short family;
union {
struct sockaddr_in sa4;
struct sockaddr_in6 sa6;
};
int saddrlen;
int addrlen;
} __attribute__((packed));
extern struct booth_node *local;
inline static int booth_get_myid(void)
{
return local ? local->nodeid : -1;
}
struct ticket_data {
/** Ticket name. */
boothc_ticket id;
/** Owner. May be NO_OWNER. See add_node(). */
uint32_t owner;
/* Better use that? but from is an int currently, too */
boothc_site owner;
/** POSIX timestamp? Or time until expiration? */
uint32_t expiry;
/* needed?? */
/* From lease */
uint32_t op; /* OP_START_LEASE, OP_STOP_LEASE? ?*/
} __attribute__((packed));
struct paxos_control_data {
/** Current protocol state. See paxos_state_t. */
uint32_t state;
/** Current ballot number. Might be < prev_ballot if overflown. */
uint32_t ballot;
/** Previous ballot. */
uint32_t prev_ballot;
/* From lease - needed? */
uint32_t clear; /* NOT_CLEAR_RELEASE ? */
uint32_t leased; /* has_been_leased by another node? */
};
struct paxos_control_data {
struct site_msg {
boothc_site site;
};
struct boothc_ticket_site_msg {
struct boothc_header header;
struct ticket_msg ticket;
struct site_msg site;
} __attribute__((packed));
struct boothc_ticket_msg {
struct boothc_header header;
struct ticket_msg ticket;
} __attribute__((packed));
struct ticket_data {
};
typedef enum {
BOOTHC_CMD_LIST = 0x30,
BOOTHC_CMD_GRANT,
BOOTHC_CMD_REVOKE,
BOOTHC_CMD_CATCHUP,
} cmd_request_t;
typedef enum {
BOOTHC_RLT_ASYNC = 0x40,
BOOTHC_RLT_SYNC_SUCC,
BOOTHC_RLT_SYNC_FAIL,
BOOTHC_RLT_INVALID_ARG,
BOOTHC_RLT_REMOTE_OP,
BOOTHC_RLT_OVERGRANT,
} cmd_result_t;
struct client {
int fd;
void (*workfn)(int);
void (*deadfn)(int);
};
int client_add(int fd, void (*workfn)(int ci), void (*deadfn)(int ci));
int do_read(int fd, void *buf, size_t count);
int do_write(int fd, void *buf, size_t count);
void process_connection(int ci);
void safe_copy(char *dest, char *value, size_t buflen, const char *description);
static inline void init_header(struct boothc_header *h, int cmd,
int result, int data_len)
{
h->magic = htonl(BOOTHC_MAGIC);
h->version = htonl(BOOTHC_VERSION);
h->length = htonl(data_len);
h->cmd = htonl(cmd);
h->from = htonl(local->nodeid);
h->expiry = htonl(0);
h->result = htonl(result);
}
static inline void init_ticket_site_header(struct boothc_ticket_site_msg *msg, int cmd)
{
init_header(&msg->header, cmd, 0, sizeof(*msg));
}
static inline void init_ticket_msg(struct boothc_ticket_msg *msg, int cmd)
{
init_header(&msg->header, cmd, 0, sizeof(*msg));
memset(&msg->ticket, 0, sizeof(msg->ticket));
}
static inline void init_ticket_site_msg(struct boothc_ticket_site_msg *msg, int cmd)
{
init_ticket_site_header(msg, cmd);
memset(&msg->site, 0, sizeof(msg->site));
memset(&msg->ticket, 0, sizeof(msg->ticket));
}
#endif /* _BOOTH_H */