squidfunk / protobluff

A modular Protocol Buffers implementation for C
https://squidfunk.github.io/protobluff/
MIT License
88 stars 18 forks source link

protoc-gen-protobluff throwing an instance of 'std::system_error' #7

Open b0661 opened 4 years ago

b0661 commented 4 years ago

Describe the bug

protoc --protobluff_out=. person.proto

creates an error:

terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1
--protobluff_out: protoc-gen-protobluff: Plugin killed by signal 6.

To Reproduce

Steps to reproduce the behavior:

  1. Compile and install on Ubuntu
#! /usr/bin/env sh
# Install protobluff to user local

# Ubuntu
sudo apt install git gcc automake libtool protobuf-compiler libprotoc-dev libprotobuf-dev check

# get the sources
git clone https://github.com/squidfunk/protobluff protobluff.git
cd protobluff.git

# configure
./autogen.sh
./configure --prefix ${HOME}/.local

# build & test & install to user dir
make
make test
make install

# remove the git repository
cd ..
rm -rf protobluff.git
  1. Run protoc
protoc --protobluff_out=. person.proto

person.proto:

syntax = "proto2";

message Person {
  message PhoneNumber {
    enum PhoneType {
      MOBILE = 0;
      HOME = 1;
      WORK = 2;
    }
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
  repeated PhoneNumber phone = 4;
}
  1. See error
terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1
--protobluff_out: protoc-gen-protobluff: Plugin killed by signal 6.

Expected behavior

Generate without error.

Impact

showstopper

Logs and console output N/A

Environment (please complete the following information):

Additional context N/A

squidfunk commented 4 years ago

Thanks for reporting! I currently have no bandwidth to debug this. The GitHub Actions build still seems to work, so it may be related to some library incompatibilities. I'm happy to collaborate on a PR!

mgrojo commented 2 years ago

In case this helps. I had a similar issue with a protoc-gen plugin for Ada [1], after finding this [2] I fixed adding pthread to the list of linked libraries.

[1] https://github.com/persan/protobuf-ada/issues/1 [2] https://stackoverflow.com/questions/59455147/running-custom-protoc-plugin-on-linux-causes