Protocol Buffers - Google's data interchange format

Overview

Protocol Buffers - Google's data interchange format

Copyright 2008 Google Inc.

https://developers.google.com/protocol-buffers/

Overview

Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. You can find protobuf's documentation on the Google Developers site.

This README file contains protobuf installation instructions. To install protobuf, you need to install the protocol compiler (used to compile .proto files) and the protobuf runtime for your chosen programming language.

Protocol Compiler Installation

The protocol compiler is written in C++. If you are using C++, please follow the C++ Installation Instructions to install protoc along with the C++ runtime.

For non-C++ users, the simplest way to install the protocol compiler is to download a pre-built binary from our release page:

https://github.com/protocolbuffers/protobuf/releases

In the downloads section of each release, you can find pre-built binaries in zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary as well as a set of standard .proto files distributed along with protobuf.

If you are looking for an old version that is not available in the release page, check out the maven repo here:

https://repo1.maven.org/maven2/com/google/protobuf/protoc/

These pre-built binaries are only provided for released versions. If you want to use the github master version at HEAD, or you need to modify protobuf code, or you are using C++, it's recommended to build your own protoc binary from source.

If you would like to build protoc binary from source, see the C++ Installation Instructions.

Protobuf Runtime Installation

Protobuf supports several different programming languages. For each programming language, you can find instructions in the corresponding source directory about how to install protobuf runtime for that specific language:

Language Source Ubuntu MacOS Windows
C++ (include C++ runtime and protoc) src Build status
Build status
Build status
Build status
Build status
Build status
Java java Build status
Build status
Build status
Build status
Python python Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Objective-C objectivec Build status
Build status
Build status
Build status
C# csharp Build status Build status
Build status
JavaScript js Build status Build status
Ruby ruby Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Go protocolbuffers/protobuf-go
PHP php Build status
Build status
Build status
Build status
Build status
Dart dart-lang/protobuf Build Status

Quick Start

The best way to learn how to use protobuf is to follow the tutorials in our developer guide:

https://developers.google.com/protocol-buffers/docs/tutorials

If you want to learn from code examples, take a look at the examples in the examples directory.

Documentation

The complete documentation for Protocol Buffers is available via the web at:

https://developers.google.com/protocol-buffers/

Comments
  • Missing value/null support for scalar value types in proto 3

    Missing value/null support for scalar value types in proto 3

    From the protobuf wire format we can tell whether a specific field exists or not. And in protobuf 2 generated code, all fields have a "HasXXX" method to tell whether the field exists or not in code. However in proto 3, we lost that ability. E.g. now we can't tell if a int32 field is missing, or has a value of 0 (default for int32 type).

    In many scenario, we need the ability to differentiate missing vs default value (basically nullable support for scalar types).

    Feng suggest workarounds:

    1. Use a wrapper message, such as google.protobuf.Int32Value. In proto3, message fields still have has-bits.
    2. Use an oneof. For example: message Test1 { oneof a_oneof { int32 a = 1; } } then you can check test.getAOneofCase().

    However, this requires change the message definition, which is a no go if you need to keep the message compatible while upgrade from proto2 to proto 3.

    We need to add back the support to detect whether a scalar type field exist or not.

    More discussion here: https://groups.google.com/forum/#!topic/protobuf/6eJKPXXoJ88

    question proto3 
    opened by lostindark 152
  • python: use relative imports in generated modules

    python: use relative imports in generated modules

    I have a package foo that looks like this:

    .
    ├── data
    │   ├── a.proto
    │   └── b.proto
    └── generated
        ├── a_pb2.py
        ├── b_pb2.py
        └── __init__.py
    
    # a.proto
    package foo;
    
    # b.proto
    import "a.proto";
    
    package foo;
    

    Generate the code: protoc -I ./data --python_out=generated data/a.proto data/b.proto. Here is the failure:

    Python 3.5.1 (default, Mar  3 2016, 09:29:07) 
    [GCC 5.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from generated import b_pb2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/corentih/repro/generated/b_pb2.py", line 16, in <module>
        import a_pb2
    ImportError: No module named 'a_pb2'
    

    This is beacuse the generated code looks like this:

    import a_pb2
    

    If the import was relative it would actually work:

    from . import a_pb2
    
    python 
    opened by little-dude 137
  • Investigate support for Unity

    Investigate support for Unity

    quoting @jskeet: "There's suspicion the current version of C# protobufs won't work with Unity, but we can add another build target for that later when we find a need - we can create a new minor version of the NuGet package for that with no problems.

    My experience with the "old" protobuf-csharp-port is that Unity on iOS has various issues, so I think we'll want to investigate them pretty thoroughly before trying to support it anyway - and we may need to conditionally compile out some features. We'll see... but I'd like to avoid having Unity support block a dotnetcore release."

    also see #638

    enhancement c# 
    opened by jtattermusch 83
  • Unable to install google-protobuf gem on JRuby

    Unable to install google-protobuf gem on JRuby

    The glcoud-ruby project has an issue opened by a user (GoogleCloudPlatform/gcloud-ruby#712) that is unable to install the latest version due to the dependencies on the grpc and google-protobuf gems not installing on jruby. I am not able to get the google-protobuf gem to install using versions 9.1.1.0 or 9.0.0.0.

    Here is the install on mac:

    $ ruby -v
    jruby 9.1.1.0 (2.3.0) 2016-05-19 fe84e89 Java HotSpot(TM) 64-Bit Server VM 25.91-b14 on 1.8.0_91-b14 +jit [darwin-x86_64]
    
    $ gem install --ignore-dependencies google-protobuf -v 3.0.0.alpha.5.0.5.1
    Building native extensions.  This could take a while...
    ERROR:  Error installing google-protobuf:
        ERROR: Failed to build gem native extension.
    
        current directory: /Users/blowmage/.gem/repos/jruby-9.1.1.0-grpc/gems/google-protobuf-3.0.0.alpha.5.0.5.1/ext/google/protobuf_c
    /Users/blowmage/.rubies/jruby-9.1.1.0/bin/jruby -r ./siteconf20160524-43044-1fuqmwb.rb extconf.rb
    NotImplementedError: C extensions are not supported
        <top> at /Users/blowmage/.rubies/jruby-9.1.1.0/lib/ruby/stdlib/mkmf.rb:1
      require at org/jruby/RubyKernel.java:944
       (root) at /Users/blowmage/.rubies/jruby-9.1.1.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        <top> at extconf.rb:3
    
    extconf failed, exit code 1
    
    Gem files will remain installed in /Users/blowmage/.gem/repos/jruby-9.1.1.0-grpc/gems/google-protobuf-3.0.0.alpha.5.0.5.1 for inspection.
    Results logged to /Users/blowmage/.gem/repos/jruby-9.1.1.0-grpc/extensions/universal-java-1.8/2.3.0/google-protobuf-3.0.0.alpha.5.0.5.1/gem_make.out
    

    Here is the install on linux:

    $ ./bin/jruby -v
    jruby 9.1.1.0 (2.3.0) 2016-05-19 fe84e89 OpenJDK 64-Bit Server VM 24.95-b01 on 1.7.0_95-b00 +jit [linux-x86_64]
    
    $ ./bin/jruby -S gem install --ignore-dependencies google-protobuf -v 3.0.0.alpha.5.0.5.1
    Building native extensions.  This could take a while...
    ERROR:  Error installing google-protobuf:
        ERROR: Failed to build gem native extension.
    
        current directory: /home/vagrant/.rvm/gems/ruby-2.3.0/gems/google-protobuf-3.0.0.alpha.5.0.5.1/ext/google/protobuf_c
    /home/vagrant/jruby-9.1.1.0/bin/jruby -r ./siteconf20160524-3528-jeg3gw.rb extconf.rb
    NotImplementedError: C extensions are not supported
        <top> at /home/vagrant/jruby-9.1.1.0/lib/ruby/stdlib/mkmf.rb:1
      require at org/jruby/RubyKernel.java:944
       (root) at /home/vagrant/jruby-9.1.1.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        <top> at extconf.rb:3
    
    extconf failed, exit code 1
    
    Gem files will remain installed in /home/vagrant/.rvm/gems/ruby-2.3.0/gems/google-protobuf-3.0.0.alpha.5.0.5.1 for inspection.
    Results logged to /home/vagrant/.rvm/gems/ruby-2.3.0/extensions/universal-java-1.7/2.3.0/google-protobuf-3.0.0.alpha.5.0.5.1/gem_make.out
    
    bug ruby 
    opened by blowmage 82
  • [CSharp] Allow Span<byte>-based parsing in CodedInputStream

    [CSharp] Allow Span-based parsing in CodedInputStream

    IMO C# protobuf implementation could strongly benefit performance-wise from allowing some unsafe code.

    Background

    First of all I am not saying that unsafe should be enabled in every build/every platform, having 100% managed library is always a nice feature. All I am suggesting is again some conditional feature on some platform.

    However there is a trend to move towards unsafe mixing we can observe in .NET Core. For example a lot of .NET Core libraries use unsafe code due to need to interop with different kind of unmanaged libraries or just to handle AOT compiled code.

    API change

    Today CodedInputStream works in two modes: streaming with byte[] buffer and with a fixed buffer.

    It would be really nice to be able to provide byte * and length to CodedInputStream constructor.

    Alternatively we could create an UnmanagedCodedInputStream which would work on unmanaged memory.

    This would require to abstracting CodedInputStream as an interface

    Affected APIs

    Async API #3166 makes absolutely no sense for UnmanagedCodedInputStream because it assumes everything have been already read.

    Benefits

    1. It's extremely useful for interop (See scenario 1)
    2. It can work with stackalloc (See scenario 2)
    3. It allows even quicker deserialization we can quicker deserialize byte * to for example fixed-size primitive types by pointer dereference. (Endiannes might be a problem here)

    Scenarios

    Scenario 1. NoSQL Database

    User is using native NoSQL database (for example RocksDB/LevelDB) and is using protobuf for data persistence. Database returns native allocated pointer with buffer. Instead of copying entire buffer to the memory user can deserialize record straight from the returned memory native memory and then free the pointer. Very little GC is involved and there is practically no overhead.

    Scenario 2. Stackalloc-ated buffers

    For performance reasons to decrease heap allocations and allocate buffer on stack. This scenario can be alternatively handled by Buffer Pooling, however stackalloc seems to be more efficient.

    Affected by

    https://github.com/dotnet/corefxlab/blob/master/docs/specs/span.md - this work in progress improvement can allow to achieve the same goals in a managed way by providing some platform improvements.

    enhancement c# P3 
    opened by mkosieradzki 70
  • proto3 and unknown fields

    proto3 and unknown fields

    I know that unknown fields have been removed from proto3, but I am trying to get an explanation about why this change was made and if there is any way to replicate that behavior in proto3.

    Thanks so much.

    referred from golang/protobuf#25

    question 
    opened by joshuarubin 69
  • Change C# reflection to avoid using expression trees

    Change C# reflection to avoid using expression trees

    This should work on Unity, Mono and .NET 3.5 as far as I'm aware. It won't work on platforms where reflection itself is prohibited, but that's a non-starter basically.

    Creating a PR to start with, but I'd like to test it in other environments before merging. Once this is in, we can look at potentially officially supporting .NET 3.5 and Unity (#644).

    cla: yes 
    opened by jskeet 68
  • Add CodedInputReader and CodedOutputWriter

    Add CodedInputReader and CodedOutputWriter

    This is very WIP/rough. I had to create a new ISpanMessage<T> interface, and some areas do not have full support for it yet (they are throwing NotSupportException right now).

    Nothing has been done on the code gen side. The way the reader and writer are used compared to the streams is almost identitical so code gen changes should be minimal.

    Perf numbers:

    WriteToByteArray and ParseFromByteArray both allocate the byte array. This matches how serialization from gRPC works today.

    WriteToBufferWriter writes to an IBufferWriter<byte> and doesn't allocate at all. For a small message CodedOutputWriter is slower than CodedOutputStream. It is faster for medium/large messages. Still some tuning to be done.

    ParseFromReadOnlySequence reads from a sequence. Its allocations are related to creating the message and whatever strings exist on the message. Using CodedInputReader is consistently faster than CodedInputStream.

    |                    Method |     Mean |     Error |    StdDev |   Median | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
    |-------------------------- |---------:|----------:|----------:|---------:|------------:|------------:|------------:|--------------------:|
    |          WriteToByteArray | 377.5 ns | 11.210 ns | 32.876 ns | 370.3 ns |      0.0682 |           - |           - |               288 B |
    |        ParseFromByteArray | 385.2 ns |  8.280 ns | 23.624 ns | 377.5 ns |      0.2666 |           - |           - |              1120 B |
    |       WriteToBufferWriter | 294.0 ns |  3.658 ns |  3.421 ns | 293.6 ns |           - |           - |           - |                   - |
    | ParseFromReadOnlySequence | 338.6 ns |  6.696 ns | 10.621 ns | 336.0 ns |      0.1903 |           - |           - |               800 B |
    

    @jskeet @davidfowl @JunTaoLuo @jtattermusch

    cla: yes c# release notes: yes 
    opened by JamesNK 58
  • [Python] Release 4.21.0 broke multiple Google Cloud client libraries (

    [Python] Release 4.21.0 broke multiple Google Cloud client libraries ("TypeError: Descriptors cannot not be created directly.")

    Example error for the google-cloud-logging==3.1.1 library using protobuf==4.21.0:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python3.10/site-packages/google/cloud/logging/__init__.py", line 18, in <module>
        from google.cloud.logging_v2 import __version__
      File "/usr/local/lib/python3.10/site-packages/google/cloud/logging_v2/__init__.py", line 25, in <module>
        from google.cloud.logging_v2.client import Client
      File "/usr/local/lib/python3.10/site-packages/google/cloud/logging_v2/client.py", line 25, in <module>
        from google.cloud.logging_v2._helpers import _add_defaults_to_filter
      File "/usr/local/lib/python3.10/site-packages/google/cloud/logging_v2/_helpers.py", line 25, in <module>
        from google.cloud.logging_v2.entries import LogEntry
      File "/usr/local/lib/python3.10/site-packages/google/cloud/logging_v2/entries.py", line 31, in <module>
        import google.cloud.audit.audit_log_pb2  # noqa: F401
      File "/usr/local/lib/python3.10/site-packages/google/cloud/audit/audit_log_pb2.py", line 62, in <module>
        _descriptor.FieldDescriptor(
      File "/usr/local/lib/python3.10/site-packages/google/protobuf/descriptor.py", line 560, in __new__
        _message.Message._CheckCalledFromGeneratedFile()
    TypeError: Descriptors cannot not be created directly.
    If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
    If you cannot immediately regenerate your protos, some other possible workarounds are:
     1. Downgrade the protobuf package to 3.20.x or lower.
     2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
    
    More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
    

    Note that this works fine with the previous protobuf==3.20.1 release.

    To reproduce:

    docker run -it python:3.10 /bin/bash
    # Within the Docker container:
    pip3 install google-cloud-logging==3.1.1 protobuf==4.21.0
    python3 -c "import google.cloud.logging"
    
    opened by lgruen 56
  • Segmentation Fault (Segfault) on the ruby gem

    Segmentation Fault (Segfault) on the ruby gem

    Hello there,

    The following segmentation fault pops up upon running

    ruby -e 'require "google/cloud/trace"'

    inside of a Docker container based on ruby:2.5-alpine (alpine 3.7.0)

    Gemfile.lock (partial)

        google-cloud-core (1.2.0)
          google-cloud-env (~> 1.0)
        google-cloud-env (1.0.1)
          faraday (~> 0.11)
        google-cloud-trace (0.31.0)
          google-cloud-core (~> 1.2)
          google-gax (~> 1.0)
          stackdriver-core (~> 1.3)
        google-gax (1.0.1)
          google-protobuf (~> 3.2)
          googleapis-common-protos (>= 1.3.5, < 2.0)
          googleauth (~> 0.6.2)
          grpc (>= 1.7.2, < 2.0)
          rly (~> 0.2.3)
        google-protobuf (3.5.1.2)
        googleapis-common-protos (1.3.7)
          google-protobuf (~> 3.0)
          googleapis-common-protos-types (~> 1.0)
          grpc (~> 1.0)
        googleapis-common-protos-types (1.0.1)
          google-protobuf (~> 3.0)
        googleauth (0.6.2)
          faraday (~> 0.12)
          jwt (>= 1.4, < 3.0)
          logging (~> 2.0)
          memoist (~> 0.12)
          multi_json (~> 1.11)
          os (~> 0.9)
          signet (~> 0.7)
        grpc (1.10.0)
          google-protobuf (~> 3.1)
          googleapis-common-protos-types (~> 1.0.0)
          googleauth (>= 0.5.1, < 0.7)
    

    Ruby Segfault Dump

    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15: [BUG] Segmentation fault at 0x0000000000016e16
    ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-musl]
    
    -- Control frame information -----------------------------------------------
    c:0039 p:---- s:0240 e:000239 CFUNC  :msgclass
    c:0038 p:0022 s:0236 e:000235 CLASS  /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15
    c:0037 p:0007 s:0233 e:000232 CLASS  /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:14
    c:0036 p:0033 s:0230 E:001380 TOP    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:13 [FINISH]
    c:0035 p:---- s:0227 e:000226 CFUNC  :require
    c:0034 p:0110 s:0222 e:000221 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0033 p:0013 s:0210 e:000209 TOP    /usr/local/bundle/gems/googleapis-common-protos-types-1.0.1/lib/google/rpc/status_pb.rb:6 [FINISH]
    c:0032 p:---- s:0207 e:000206 CFUNC  :require
    c:0031 p:0110 s:0202 e:000201 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0030 p:0013 s:0190 e:000189 TOP    /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16 [FINISH]
    c:0029 p:---- s:0187 e:000186 CFUNC  :require
    c:0028 p:0110 s:0182 e:000181 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0027 p:0013 s:0170 e:000169 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/grpc.rb:31 [FINISH]
    c:0026 p:---- s:0167 e:000166 CFUNC  :require
    c:0025 p:0110 s:0162 e:000161 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0024 p:0013 s:0150 e:000149 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/errors.rb:32 [FINISH]
    c:0023 p:---- s:0147 e:000146 CFUNC  :require
    c:0022 p:0110 s:0142 e:000141 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0021 p:0013 s:0130 e:000129 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/api_callable.rb:32 [FINISH]
    c:0020 p:---- s:0127 e:000126 CFUNC  :require
    c:0019 p:0110 s:0122 e:000121 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0018 p:0006 s:0110 e:000109 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax.rb:30 [FINISH]
    c:0017 p:---- s:0107 e:000106 CFUNC  :require
    c:0016 p:0110 s:0102 e:000101 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0015 p:0020 s:0090 e:000089 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1/trace_service_client.rb:28 [FINISH]
    c:0014 p:---- s:0087 e:000086 CFUNC  :require
    c:0013 p:0110 s:0082 e:000081 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0012 p:0006 s:0070 e:000069 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1.rb:16 [FINISH]
    c:0011 p:---- s:0067 e:000066 CFUNC  :require
    c:0010 p:0110 s:0062 e:000061 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0009 p:0020 s:0050 e:000049 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/service.rb:18 [FINISH]
    c:0008 p:---- s:0047 e:000046 CFUNC  :require
    c:0007 p:0110 s:0042 e:000041 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0006 p:0062 s:0030 e:000029 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace.rb:24 [FINISH]
    c:0005 p:---- s:0027 e:000026 CFUNC  :require
    c:0004 p:0091 s:0022 e:000021 RESCUE /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135
    c:0003 p:0376 s:0018 e:000017 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39
    c:0002 p:0006 s:0006 e:000005 EVAL   -e:1 [FINISH]
    c:0001 p:0000 s:0003 E:000d00 (none) [FINISH]
    
    -- Ruby level backtrace information ----------------------------------------
    -e:1:in `<main>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace.rb:24:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/service.rb:18:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1.rb:16:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1/trace_service_client.rb:28:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax.rb:30:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/api_callable.rb:32:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/errors.rb:32:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/grpc.rb:31:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/googleapis-common-protos-types-1.0.1/lib/google/rpc/status_pb.rb:6:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:13:in `<top (required)>'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:14:in `<module:Google>'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15:in `<module:Protobuf>'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15:in `msgclass'
    
    -- Machine register context ------------------------------------------------
     RIP: 0x0000000000016e16 RBP: 0x00007ffda9865780 RSP: 0x00007ffda9865738
     RAX: 0x000000000000000a RBX: 0x000055d0f91e09c0 RCX: 0x0000000000000008
     RDX: 0x0000000000000001 RDI: 0x00007ffda9865740 RSI: 0x00007ffda986574e
      R8: 0x0000000000000003  R9: 0xffffffffffffffff R10: 0x0000000000000000
     R11: 0x000055d0f92be2c0 R12: 0x0000000000000000 R13: 0x0000000000000002
     R14: 0x00007ffda98657e8 R15: 0x000055d0f91e09c0 EFL: 0x0000000000010246
    
    -- Other runtime information -----------------------------------------------
    
    * Loaded script: -e
    
    * Loaded features:
    
        0 enumerator.so
        1 thread.rb
        2 rational.so
        3 complex.so
        4 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
        5 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
        6 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/rbconfig.rb
        7 /usr/local/lib/ruby/2.5.0/rubygems/compatibility.rb
        8 /usr/local/lib/ruby/2.5.0/rubygems/defaults.rb
        9 /usr/local/lib/ruby/2.5.0/rubygems/deprecate.rb
       10 /usr/local/lib/ruby/2.5.0/rubygems/errors.rb
       11 /usr/local/lib/ruby/2.5.0/rubygems/version.rb
       12 /usr/local/lib/ruby/2.5.0/rubygems/requirement.rb
       13 /usr/local/lib/ruby/2.5.0/rubygems/platform.rb
       14 /usr/local/lib/ruby/2.5.0/rubygems/basic_specification.rb
       15 /usr/local/lib/ruby/2.5.0/rubygems/stub_specification.rb
       16 /usr/local/lib/ruby/2.5.0/rubygems/util/list.rb
       17 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
       18 /usr/local/lib/ruby/2.5.0/uri/rfc2396_parser.rb
       19 /usr/local/lib/ruby/2.5.0/uri/rfc3986_parser.rb
       20 /usr/local/lib/ruby/2.5.0/uri/common.rb
       21 /usr/local/lib/ruby/2.5.0/uri/generic.rb
       22 /usr/local/lib/ruby/2.5.0/uri/ftp.rb
       23 /usr/local/lib/ruby/2.5.0/uri/http.rb
       24 /usr/local/lib/ruby/2.5.0/uri/https.rb
       25 /usr/local/lib/ruby/2.5.0/uri/ldap.rb
       26 /usr/local/lib/ruby/2.5.0/uri/ldaps.rb
       27 /usr/local/lib/ruby/2.5.0/uri/mailto.rb
       28 /usr/local/lib/ruby/2.5.0/uri.rb
       29 /usr/local/lib/ruby/2.5.0/rubygems/specification.rb
       30 /usr/local/lib/ruby/2.5.0/rubygems/exceptions.rb
       31 /usr/local/lib/ruby/2.5.0/rubygems/dependency.rb
       32 /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_gem.rb
       33 /usr/local/lib/ruby/2.5.0/monitor.rb
       34 /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb
       35 /usr/local/lib/ruby/2.5.0/rubygems.rb
       36 /usr/local/lib/ruby/2.5.0/rubygems/path_support.rb
       37 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/version.rb
       38 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/core_ext/name_error.rb
       39 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/levenshtein.rb
       40 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/jaro_winkler.rb
       41 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checker.rb
       42 /usr/local/lib/ruby/2.5.0/delegate.rb
       43 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
       44 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
       45 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
       46 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
       47 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/key_error_checker.rb
       48 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/null_checker.rb
       49 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/formatters/plain_formatter.rb
       50 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean.rb
       51 /usr/local/lib/ruby/2.5.0/rubygems/bundler_version_finder.rb
       52 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud/config.rb
       53 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud/core/version.rb
       54 /usr/local/lib/ruby/2.5.0/cgi/core.rb
       55 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
       56 /usr/local/lib/ruby/2.5.0/cgi/util.rb
       57 /usr/local/lib/ruby/2.5.0/cgi/cookie.rb
       58 /usr/local/lib/ruby/2.5.0/cgi.rb
       59 /usr/local/lib/ruby/2.5.0/set.rb
       60 /usr/local/lib/ruby/2.5.0/forwardable/impl.rb
       61 /usr/local/lib/ruby/2.5.0/forwardable.rb
       62 /usr/local/lib/ruby/2.5.0/timeout.rb
       63 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/utils.rb
       64 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/options.rb
       65 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/connection.rb
       66 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/rack_builder.rb
       67 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/parameters.rb
       68 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/middleware.rb
       69 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/adapter.rb
       70 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/request.rb
       71 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/response.rb
       72 /usr/local/bundle/gems/multipart-post-2.0.0/lib/composite_io.rb
       73 /usr/local/bundle/gems/multipart-post-2.0.0/lib/parts.rb
       74 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/upload_io.rb
       75 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/error.rb
       76 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/autoload.rb
       77 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday.rb
       78 /usr/local/lib/ruby/2.5.0/json/version.rb
       79 /usr/local/lib/ruby/2.5.0/ostruct.rb
       80 /usr/local/lib/ruby/2.5.0/json/generic_object.rb
       81 /usr/local/lib/ruby/2.5.0/json/common.rb
       82 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
       83 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
       84 /usr/local/lib/ruby/2.5.0/json/ext.rb
       85 /usr/local/lib/ruby/2.5.0/json.rb
       86 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/request/url_encoded.rb
       87 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
       88 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
       89 /usr/local/lib/ruby/2.5.0/socket.rb
       90 /usr/local/lib/ruby/2.5.0/net/protocol.rb
       91 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
       92 /usr/local/lib/ruby/2.5.0/net/http/exceptions.rb
       93 /usr/local/lib/ruby/2.5.0/net/http/header.rb
       94 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
       95 /usr/local/lib/ruby/2.5.0/net/http/generic_request.rb
       96 /usr/local/lib/ruby/2.5.0/net/http/request.rb
       97 /usr/local/lib/ruby/2.5.0/net/http/requests.rb
       98 /usr/local/lib/ruby/2.5.0/net/http/response.rb
       99 /usr/local/lib/ruby/2.5.0/net/http/responses.rb
      100 /usr/local/lib/ruby/2.5.0/net/http/proxy_delta.rb
      101 /usr/local/lib/ruby/2.5.0/net/http/backward.rb
      102 /usr/local/lib/ruby/2.5.0/net/http.rb
      103 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
      104 /usr/local/lib/ruby/2.5.0/digest.rb
      105 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
      106 /usr/local/lib/ruby/2.5.0/openssl/bn.rb
      107 /usr/local/lib/ruby/2.5.0/openssl/pkey.rb
      108 /usr/local/lib/ruby/2.5.0/openssl/cipher.rb
      109 /usr/local/lib/ruby/2.5.0/openssl/config.rb
      110 /usr/local/lib/ruby/2.5.0/openssl/digest.rb
      111 /usr/local/lib/ruby/2.5.0/openssl/x509.rb
      112 /usr/local/lib/ruby/2.5.0/openssl/buffering.rb
      113 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
      114 /usr/local/lib/ruby/2.5.0/openssl/ssl.rb
      115 /usr/local/lib/ruby/2.5.0/openssl/pkcs5.rb
      116 /usr/local/lib/ruby/2.5.0/openssl.rb
      117 /usr/local/lib/ruby/2.5.0/net/https.rb
      118 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/adapter/net_http.rb
      119 /usr/local/bundle/gems/google-cloud-env-1.0.1/lib/google/cloud/env.rb
      120 /usr/local/bundle/gems/google-cloud-env-1.0.1/lib/google/cloud/env/version.rb
      121 /usr/local/bundle/gems/google-cloud-env-1.0.1/lib/google-cloud-env.rb
      122 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud.rb
      123 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/version.rb
      124 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/idna/pure.rb
      125 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/idna.rb
      126 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/domain.rb
      127 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/version.rb
      128 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/errors.rb
      129 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/rule.rb
      130 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/list.rb
      131 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix.rb
      132 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/uri.rb
      133 /usr/local/bundle/gems/signet-0.8.1/lib/signet/version.rb
      134 /usr/local/bundle/gems/signet-0.8.1/lib/signet.rb
      135 /usr/local/bundle/gems/signet-0.8.1/lib/signet/errors.rb
      136 /usr/local/lib/ruby/2.5.0/base64.rb
      137 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/options.rb
      138 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/version.rb
      139 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/adapter_error.rb
      140 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/parse_error.rb
      141 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb
      142 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json.rb
      143 /usr/local/bundle/gems/signet-0.8.1/lib/signet/oauth_2.rb
      144 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/json.rb
      145 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/error.rb
      146 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/verify.rb
      147 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/decode.rb
      148 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt.rb
      149 /usr/local/bundle/gems/signet-0.8.1/lib/signet/oauth_2/client.rb
      150 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/signet.rb
      151 /usr/local/bundle/gems/memoist-0.16.0/lib/memoist/version.rb
      152 /usr/local/bundle/gems/memoist-0.16.0/lib/memoist/core_ext/singleton_class.rb
      153 /usr/local/bundle/gems/memoist-0.16.0/lib/memoist.rb
      154 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/compute_engine.rb
      155 /usr/local/lib/ruby/2.5.0/psych/versions.rb
      156 /usr/local/lib/ruby/2.5.0/psych/exception.rb
      157 /usr/local/lib/ruby/2.5.0/psych/syntax_error.rb
      158 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
      159 /usr/local/lib/ruby/2.5.0/psych/omap.rb
      160 /usr/local/lib/ruby/2.5.0/psych/set.rb
      161 /usr/local/lib/ruby/2.5.0/psych/class_loader.rb
      162 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
      163 /usr/local/lib/ruby/2.5.0/psych/scalar_scanner.rb
      164 /usr/local/lib/ruby/2.5.0/psych/nodes/node.rb
      165 /usr/local/lib/ruby/2.5.0/psych/nodes/stream.rb
      166 /usr/local/lib/ruby/2.5.0/psych/nodes/document.rb
      167 /usr/local/lib/ruby/2.5.0/psych/nodes/sequence.rb
      168 /usr/local/lib/ruby/2.5.0/psych/nodes/scalar.rb
      169 /usr/local/lib/ruby/2.5.0/psych/nodes/mapping.rb
      170 /usr/local/lib/ruby/2.5.0/psych/nodes/alias.rb
      171 /usr/local/lib/ruby/2.5.0/psych/nodes.rb
      172 /usr/local/lib/ruby/2.5.0/psych/streaming.rb
      173 /usr/local/lib/ruby/2.5.0/psych/visitors/visitor.rb
      174 /usr/local/lib/ruby/2.5.0/psych/visitors/to_ruby.rb
      175 /usr/local/lib/ruby/2.5.0/psych/visitors/emitter.rb
      176 /usr/local/lib/ruby/2.5.0/psych/handler.rb
      177 /usr/local/lib/ruby/2.5.0/psych/tree_builder.rb
      178 /usr/local/lib/ruby/2.5.0/psych/visitors/yaml_tree.rb
      179 /usr/local/lib/ruby/2.5.0/psych/json/ruby_events.rb
      180 /usr/local/lib/ruby/2.5.0/psych/visitors/json_tree.rb
      181 /usr/local/lib/ruby/2.5.0/psych/visitors/depth_first.rb
      182 /usr/local/lib/ruby/2.5.0/psych/visitors.rb
      183 /usr/local/lib/ruby/2.5.0/psych/parser.rb
      184 /usr/local/lib/ruby/2.5.0/psych/coder.rb
      185 /usr/local/lib/ruby/2.5.0/psych/core_ext.rb
      186 /usr/local/lib/ruby/2.5.0/psych/stream.rb
      187 /usr/local/lib/ruby/2.5.0/psych/json/yaml_events.rb
      188 /usr/local/lib/ruby/2.5.0/psych/json/tree_builder.rb
      189 /usr/local/lib/ruby/2.5.0/psych/json/stream.rb
      190 /usr/local/lib/ruby/2.5.0/psych/handlers/document_stream.rb
      191 /usr/local/lib/ruby/2.5.0/psych.rb
      192 /usr/local/lib/ruby/2.5.0/yaml.rb
      193 /usr/local/bundle/gems/os-0.9.6/lib/os.rb
      194 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/credentials_loader.rb
      195 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/service_account.rb
      196 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/scope_util.rb
      197 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/user_refresh.rb
      198 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/default_credentials.rb
      199 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/application_default.rb
      200 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/client_id.rb
      201 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/credentials.rb
      202 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/user_authorizer.rb
      203 /usr/local/lib/ruby/2.5.0/securerandom.rb
      204 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/web_user_authorizer.rb
      205 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth.rb
      206 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google-cloud-trace.rb
      207 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/version.rb
      208 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/credentials.rb
      209 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/label_key.rb
      210 /usr/local/bundle/gems/stackdriver-core-1.3.0/lib/stackdriver/core/async_actor.rb
      211 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/async_reporter.rb
      212 /usr/local/bundle/gems/stackdriver-core-1.3.0/lib/stackdriver/core/trace_context.rb
      213 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/middleware.rb
      214 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/notifications.rb
      215 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/project.rb
      216 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/result_set.rb
      217 /usr/local/lib/ruby/2.5.0/English.rb
      218 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud/errors.rb
      219 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
      220 /usr/local/lib/ruby/2.5.0/pathname.rb
      221 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
      222 /usr/local/lib/ruby/2.5.0/date.rb
      223 /usr/local/lib/ruby/2.5.0/time.rb
      224 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
      225 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/grpc.rb
      226 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/errors.rb
      227 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/logconfig.rb
      228 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/notifier.rb
      229 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/version.rb
      230 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/core/time_consts.rb
      231 /usr/local/lib/ruby/2.5.0/weakref.rb
      232 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/bidi_call.rb
      233 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/active_call.rb
      234 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/client_stub.rb
      235 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/rpc_desc.rb
      236 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/service.rb
      237 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/rpc_server.rb
      238 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/interceptor_registry.rb
      239 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/interceptors.rb
      240 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc.rb
      241 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/message_exts.rb
      242 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
      243 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/repeated_field.rb
      244 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf.rb
    
    * Process memory map:
    
    55d0f7453000-55d0f7454000 r-xp 00000000 08:06 154456                     /usr/local/bin/ruby
    55d0f7653000-55d0f7654000 r--p 00000000 08:06 154456                     /usr/local/bin/ruby
    55d0f7654000-55d0f7655000 rw-p 00001000 08:06 154456                     /usr/local/bin/ruby
    55d0f89e8000-55d0f9987000 rw-p 00000000 00:00 0                          [heap]
    7f6c3bcb9000-7f6c3bd1a000 rw-p 00000000 00:00 0
    7f6c3bd1a000-7f6c3bf70000 r-xp 00000000 08:06 5929343                    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
    7f6c3bf70000-7f6c3bf78000 r--p 00056000 08:06 5929343                    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
    7f6c3bf78000-7f6c3bf7a000 rw-p 0005e000 08:06 5929343                    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
    7f6c3bf7a000-7f6c3c169000 rw-p 00000000 00:00 0
    7f6c3c169000-7f6c3c5af000 r-xp 00000000 08:06 10524010                   /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
    7f6c3c5af000-7f6c3c5c4000 r--p 00246000 08:06 10524010                   /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
    7f6c3c5c4000-7f6c3c5cb000 rw-p 0025b000 08:06 10524010                   /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
    7f6c3c5cb000-7f6c3c5d0000 rw-p 00000000 00:00 0
    7f6c3c5d0000-7f6c3c803000 r-xp 00000000 08:06 155330                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
    7f6c3c803000-7f6c3c804000 r--p 00033000 08:06 155330                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
    7f6c3c804000-7f6c3c805000 rw-p 00034000 08:06 155330                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
    7f6c3c805000-7f6c3c806000 rw-p 00000000 00:00 0
    7f6c3c806000-7f6c3ca0d000 r-xp 00000000 08:06 155416                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
    7f6c3ca0d000-7f6c3ca0e000 r--p 00007000 08:06 155416                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
    7f6c3ca0e000-7f6c3ca0f000 rw-p 00008000 08:06 155416                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
    7f6c3ca0f000-7f6c3cc15000 r-xp 00000000 08:06 155429                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
    7f6c3cc15000-7f6c3cc16000 r--p 00006000 08:06 155429                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
    7f6c3cc16000-7f6c3cc17000 rw-p 00007000 08:06 155429                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
    7f6c3cc17000-7f6c3ce30000 r-xp 00000000 08:06 154434                     /usr/lib/libyaml-0.so.2.0.5
    7f6c3ce30000-7f6c3ce31000 r--p 00019000 08:06 154434                     /usr/lib/libyaml-0.so.2.0.5
    7f6c3ce31000-7f6c3ce32000 rw-p 0001a000 08:06 154434                     /usr/lib/libyaml-0.so.2.0.5
    7f6c3ce32000-7f6c3d037000 r-xp 00000000 08:06 155417                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
    7f6c3d037000-7f6c3d038000 r--p 00005000 08:06 155417                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
    7f6c3d038000-7f6c3d039000 rw-p 00006000 08:06 155417                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
    7f6c3d039000-7f6c3d239000 r-xp 00000000 08:06 155407                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
    7f6c3d239000-7f6c3d23a000 r--p 00000000 08:06 155407                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
    7f6c3d23a000-7f6c3d23b000 rw-p 00001000 08:06 155407                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
    7f6c3d23b000-7f6c3d43e000 r-xp 00000000 08:06 155338                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
    7f6c3d43e000-7f6c3d43f000 r--p 00003000 08:06 155338                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
    7f6c3d43f000-7f6c3d440000 rw-p 00004000 08:06 155338                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
    7f6c3d440000-7f6c3d7bf000 r-xp 00000000 08:06 9849394                    /lib/libcrypto.so.42.0.0
    7f6c3d7bf000-7f6c3d7dc000 r--p 0017f000 08:06 9849394                    /lib/libcrypto.so.42.0.0
    7f6c3d7dc000-7f6c3d7e2000 rw-p 0019c000 08:06 9849394                    /lib/libcrypto.so.42.0.0
    7f6c3d7e2000-7f6c3d7e6000 rw-p 00000000 00:00 0
    7f6c3d7e6000-7f6c3da2a000 r-xp 00000000 08:06 9849396                    /lib/libssl.so.44.0.1
    7f6c3da2a000-7f6c3da2e000 r--p 00044000 08:06 9849396                    /lib/libssl.so.44.0.1
    7f6c3da2e000-7f6c3da32000 rw-p 00048000 08:06 9849396                    /lib/libssl.so.44.0.1
    7f6c3da32000-7f6c3dc86000 r-xp 00000000 08:06 155415                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
    7f6c3dc86000-7f6c3dc8a000 r--p 00054000 08:06 155415                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
    7f6c3dc8a000-7f6c3dc8b000 rw-p 00058000 08:06 155415                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
    7f6c3dc8b000-7f6c3de8d000 r-xp 00000000 08:06 155399                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
    7f6c3de8d000-7f6c3de8e000 r--p 00002000 08:06 155399                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
    7f6c3de8e000-7f6c3de8f000 rw-p 00003000 08:06 155399                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
    7f6c3de8f000-7f6c3e0a4000 r-xp 00000000 08:06 9849398                    /lib/libz.so.1.2.11
    7f6c3e0a4000-7f6c3e0a5000 r--p 00015000 08:06 9849398                    /lib/libz.so.1.2.11
    7f6c3e0a5000-7f6c3e0a6000 rw-p 00016000 08:06 9849398                    /lib/libz.so.1.2.11
    7f6c3e0a6000-7f6c3e2b7000 r-xp 00000000 08:06 155431                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
    7f6c3e2b7000-7f6c3e2b8000 r--p 00011000 08:06 155431                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
    7f6c3e2b8000-7f6c3e2b9000 rw-p 00012000 08:06 155431                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
    7f6c3e2b9000-7f6c3e4ba000 r-xp 00000000 08:06 155408                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
    7f6c3e4ba000-7f6c3e4bb000 r--p 00001000 08:06 155408                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
    7f6c3e4bb000-7f6c3e4bc000 rw-p 00002000 08:06 155408                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
    7f6c3e4bc000-7f6c3e6e8000 r-xp 00000000 08:06 155427                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
    7f6c3e6e8000-7f6c3e6e9000 r--p 0002c000 08:06 155427                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
    7f6c3e6e9000-7f6c3e6ea000 rw-p 0002d000 08:06 155427                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
    7f6c3e6ea000-7f6c3e8f3000 r-xp 00000000 08:06 155411                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
    7f6c3e8f3000-7f6c3e8f4000 r--p 00009000 08:06 155411                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
    7f6c3e8f4000-7f6c3e8f5000 rw-p 0000a000 08:06 155411                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
    7f6c3e8f5000-7f6c3eafa000 r-xp 00000000 08:06 155412                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
    7f6c3eafa000-7f6c3eafb000 r--p 00005000 08:06 155412                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
    7f6c3eafb000-7f6c3eafc000 rw-p 00006000 08:06 155412                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
    7f6c3eafc000-7f6c3ecfe000 r-xp 00000000 08:06 155327                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
    7f6c3ecfe000-7f6c3ecff000 r--p 00002000 08:06 155327                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
    7f6c3ecff000-7f6c3ed00000 rw-p 00003000 08:06 155327                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
    7f6c3ed00000-7f6c3ef08000 r-xp 00000000 08:06 155428                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
    7f6c3ef08000-7f6c3ef09000 r--p 00008000 08:06 155428                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
    7f6c3ef09000-7f6c3ef0a000 rw-p 00009000 08:06 155428                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
    7f6c3ef0a000-7f6c3f10c000 r-xp 00000000 08:06 155386                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
    7f6c3f10c000-7f6c3f10d000 r--p 00002000 08:06 155386                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
    7f6c3f10d000-7f6c3f10e000 rw-p 00003000 08:06 155386                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
    7f6c3f10e000-7f6c3f30f000 r-xp 00000000 08:06 155343                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
    7f6c3f30f000-7f6c3f310000 r--p 00001000 08:06 155343                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
    7f6c3f310000-7f6c3f311000 rw-p 00002000 08:06 155343                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
    7f6c3f311000-7f6c3f824000 r-xp 00000000 08:06 154493                     /usr/local/lib/libruby.so.2.5.1
    7f6c3f824000-7f6c3f82c000 r--p 00313000 08:06 154493                     /usr/local/lib/libruby.so.2.5.1
    7f6c3f82c000-7f6c3f82d000 rw-p 0031b000 08:06 154493                     /usr/local/lib/libruby.so.2.5.1
    7f6c3f82d000-7f6c3f83b000 rw-p 00000000 00:00 0
    7f6c3f83b000-7f6c3f8c4000 r-xp 00000000 08:06 154211                     /lib/ld-musl-x86_64.so.1
    7f6c3f8d2000-7f6c3f916000 rw-p 00000000 00:00 0
    7f6c3f916000-7f6c3f9ba000 rw-p 00000000 00:00 0
    7f6c3f9ba000-7f6c3f9bb000 r--s 00000000 08:06 9723329                    /etc/localtime
    7f6c3f9bb000-7f6c3f9bd000 ---p 00000000 00:00 0
    7f6c3f9bd000-7f6c3fac3000 rw-p 00000000 00:00 0
    7f6c3fac3000-7f6c3fac4000 r--p 00088000 08:06 154211                     /lib/ld-musl-x86_64.so.1
    7f6c3fac4000-7f6c3fac5000 rw-p 00089000 08:06 154211                     /lib/ld-musl-x86_64.so.1
    7f6c3fac5000-7f6c3fac8000 rw-p 00000000 00:00 0
    7ffda984e000-7ffda986f000 rw-p 00000000 00:00 0                          [stack]
    7ffda99f5000-7ffda99f8000 r--p 00000000 00:00 0                          [vvar]
    7ffda99f8000-7ffda99fa000 r-xp 00000000 00:00 0                          [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
    
    
    [NOTE]
    You may have encountered a bug in the Ruby interpreter or extension libraries.
    Bug reports are welcome.
    For details: http://www.ruby-lang.org/bugreport.html
    
    Aborted (core dumped)
    
    bug ruby P2 
    opened by larribas 54
  • Allow defining constant values to be added

    Allow defining constant values to be added

    We are using protobuf through gRPC and would like to include in the message definition a value which is provided in the .proto file and not by the program. For example, something like that:

    message SessionRequest {
        string version = 1 [constant="0.1.0"];
    }
    

    The purpose of such version is to make debugging easier: if communication fails, we can log the versions and use that to debug further.

    opened by mitar 51
  • we have some memoey leak in php-cli mode

    we have some memoey leak in php-cli mode

    test proto message: message MemoryLeakTestMsg{ repeated int32 numbers = 1; }

    php test class: `class MemoryLeaktest{ protected $_memory_leak_test_msg; protected $_rand_arr = [];

    public function __construct(){ $this->_memory_leak_test_msg = new MemoryLeakTestMsg();

    for($i=0;$i<20;$i++){
    	$this->_rand_arr[] = mt_rand(1,30000);
    }
    

    }

    public function TestProto(){ $this->_memory_leak_test_msg->clear(); $this->_memory_leak_test_msg->setNumbers($this->_rand_arr); $this->_memory_leak_test_msg->serializeToJsonString() . "\n"; return $this->_memory_leak_test_msg; }

    public function ResetProto(){ $this->_memory_leak_test_msg = new MemoryLeakTestMsg(); } }`

    php script: `$start = microtime(true);

    $test = new MemoryLeaktest();

    $cnt = 0;

    while (1){ $rt = $test->TestProto(); $cnt++; if($cnt % 100000 == 0){ $end = microtime(true); echo $cnt.'use time:'.round(($end-$start)*1000,2).'ms'."\n"; //$test->ResetProto(); //if open this code comments,the program will be ok } }` php version is 7.4.33, protobuf version is 3.21,centos 7.9 run the script with command 'php -f test.php' the program memoryusage will always bigger.

    I run the same code in workerman https://github.com/walkor/workerman ,the process will crash with no memory to use

    untriaged 
    opened by zhanchao234 1
  • Missing Linux wheels for protobuf==4.21.x for Python 3.8, 3.9, 3.10?

    Missing Linux wheels for protobuf==4.21.x for Python 3.8, 3.9, 3.10?

    What version of protobuf and what language are you using? Version: 4.21.12 Language: Python

    What operating system (Linux, Windows, ...) and version? Ubuntu 22.04.1 LTS

    What runtime / compiler are you using (e.g., python version or gcc version) Python 3.9.16 or Python 3.10.6

    What did you do? Steps to reproduce the behavior:

    1. Create a virtualenv: virtualenv .venv --python 3.10.6 (or similar)
    2. Activate virtualenv: source .venv/bin/activate
    3. Install protobuf==4.21.12: pip install protobuf==4.21.12 --no-cache-dir
    4. See that it installs protobuf-4.21.12-cp37-abi3-manylinux2014_x86_64.whl
    ❯ pip install protobuf==4.21.12 --no-cache-dir
    Collecting protobuf==4.21.12
      Downloading protobuf-4.21.12-cp37-abi3-manylinux2014_x86_64.whl (409 kB)
    ...
    Installing collected packages: protobuf
    Successfully installed protobuf-4.21.12
    

    What did you expect to see

    That it would install a version of protobuf that's not tied to CPython 3.7.

    What did you see instead?

    It installs a manylinux wheel of Protobuf tied to CPython 3.7 (protobuf-4.21.12-cp37-abi3-manylinux2014_x86_64.whl). This is causing issues for me. Why is there no corresponding manylinux wheel for CPython 3.8, CPython 3.9, CPython 3.10? I see there's a wheel called protobuf-4.21.12-py3-none-any.whl and there are Windows wheels for them, but no such wheels for CPython 3.8, 3.9, 3.10 (See here: https://pypi.org/project/protobuf/4.21.12/#files).

    Additionally, if you revert to 3.20.3, you do have wheels for those platforms, like: protobuf-3.20.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (See here: https://pypi.org/project/protobuf/3.20.3/#files).

    untriaged 
    opened by Atheuz 0
  • Updated our version of rules_proto.

    Updated our version of rules_proto.

    Updated our version of rules_proto.

    We were previously on a version that was nearly two years old: https://github.com/bazelbuild/rules_proto/commit/f7a30f6f80006b591fa7c437fe5a951eb10bcbcf

    opened by copybara-service[bot] 0
  • Protobuf cannot be compiled on system without system compiler

    Protobuf cannot be compiled on system without system compiler

    Hello!

    I'm trying to build latest Protobuf 21.12 by using our custom compiler on system (AlmaLinux release 8.7) without system compiler and looks like it's impossible to accomplish.

    We have gcc 12.1 compiled manually in /opt and I've tried using it to build Protobuf on system without system compiler at all:

    gcc
    -bash: gcc: command not found
    g++
    -bash: g++: command not found
    

    I run configuration by specifying path to our C++ and C compiler binaries using standard environment variables CC and CXX mentioned in configures's help page:

    Some influential environment variables:
      ...
      CC          C compiler command
      ...
      CXX         C++ compiler command
    

    And it fails:

    CC=/opt/fastnetmon-community/libraries/gcc1210/bin/gcc CXX=/opt/fastnetmon-community/libraries/gcc1210/bin/g++ ./configure --prefix=/opt/protobuf
    checking whether to enable maintainer-specific portions of Makefiles... yes
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking target system type... x86_64-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether UID '0' is supported by ustar format... yes
    checking whether GID '0' is supported by ustar format... yes
    checking how to create a ustar tar archive... gnutar
    checking whether make supports nested variables... (cached) yes
    checking for gcc... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to enable C11 features... none needed
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... gcc3
    checking whether the compiler supports GNU C++... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/g++ accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to enable C++11 features... none needed
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/g++... gcc3
    checking how to run the C preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc -E
    checking for gcc... no
    checking for cc... no
    checking for cl.exe... no
    checking for clang... no
    configure: error: in `/root/protobuf-21.12':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details
    

    Them I've installed gcc and it changed to another error:

    CC=/opt/fastnetmon-community/libraries/gcc1210/bin/gcc CXX=/opt/fastnetmon-community/libraries/gcc1210/bin/g++ ./configure --prefix=/opt/fastnetmon-community/libraries/protobuf_3_15_7
    checking whether to enable maintainer-specific portions of Makefiles... yes
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking target system type... x86_64-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether UID '0' is supported by ustar format... yes
    checking whether GID '0' is supported by ustar format... yes
    checking how to create a ustar tar archive... gnutar
    checking whether make supports nested variables... (cached) yes
    checking for gcc... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to enable C11 features... none needed
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... gcc3
    checking whether the compiler supports GNU C++... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/g++ accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to enable C++11 features... none needed
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/g++... gcc3
    checking how to run the C preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc -E
    checking for gcc... gcc
    checking whether the compiler supports GNU C... (cached) yes
    checking whether gcc accepts -g... yes
    checking for gcc option to enable C11 features... (cached) none needed
    checking whether gcc understands -c and -o together... (cached) yes
    checking dependency style of gcc... (cached) gcc3
    checking how to run the C preprocessor... gcc -E
    checking how to run the C++ preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/g++ -E
    checking for g++... no
    checking for c++... no
    checking for gpp... no
    checking for aCC... no
    checking for CC... no
    checking for cxx... no
    checking for cc++... no
    checking for cl.exe... no
    checking for FCC... no
    checking for KCC... no
    checking for RCC... no
    checking for xlC_r... no
    checking for xlC... no
    checking for clang++... no
    checking whether the compiler supports GNU C++... (cached) yes
    checking whether g++ accepts -g... yes
    checking for g++ option to enable C++11 features... (cached) none needed
    checking dependency style of g++... (cached) gcc3
    checking how to run the C++ preprocessor... /lib/cpp
    configure: error: in `/root/protobuf-21.12':
    configure: error: C++ preprocessor "/lib/cpp" fails sanity check
    See `config.log' for more details
    

    Finally, it was configured successfully after I installed gcc-c++:

    CC=/opt/fastnetmon-community/libraries/gcc1210/bin/gcc CXX=/opt/fastnetmon-community/libraries/gcc1210/bin/g++ ./configure --prefix=/opt/fastnetmon-community/libraries/protobuf_3_15_7
    checking whether to enable maintainer-specific portions of Makefiles... yes
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking target system type... x86_64-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether UID '0' is supported by ustar format... yes
    checking whether GID '0' is supported by ustar format... yes
    checking how to create a ustar tar archive... gnutar
    checking whether make supports nested variables... (cached) yes
    checking for gcc... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to enable C11 features... none needed
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... gcc3
    checking whether the compiler supports GNU C++... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/g++ accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to enable C++11 features... none needed
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/g++... gcc3
    checking how to run the C preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc -E
    checking for gcc... gcc
    checking whether the compiler supports GNU C... (cached) yes
    checking whether gcc accepts -g... yes
    checking for gcc option to enable C11 features... (cached) none needed
    checking whether gcc understands -c and -o together... (cached) yes
    checking dependency style of gcc... (cached) gcc3
    checking how to run the C preprocessor... gcc -E
    checking how to run the C++ preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/g++ -E
    checking for g++... g++
    checking whether the compiler supports GNU C++... (cached) yes
    checking whether g++ accepts -g... yes
    checking for g++ option to enable C++11 features... (cached) none needed
    checking dependency style of g++... (cached) gcc3
    checking how to run the C++ preprocessor... g++ -E
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.h... yes
    checking for unistd.h... yes
    checking for wchar.h... yes
    checking for minix/config.h... no
    checking whether it is safe to define __EXTENSIONS__... yes
    checking whether _XOPEN_SOURCE should be defined... no
    checking for ar... ar
    checking the archiver (ar) interface... ar
    checking C++ compiler flags...... use default: -O2  -g -std=c++11 -DNDEBUG
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ options needed to detect all undeclared functions... none needed
    checking whether __SUNPRO_CC is declared... no
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/bin/ld option to reload object files... -r
    checking for file... file
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... no
    checking how to associate runtime and link libraries... printf %s\n
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from /opt/fastnetmon-community/libraries/gcc1210/bin/gcc object... ok
    checking for sysroot... no
    checking for a working dd... ./configure: line 11505: cmp: command not found
    ./configure: line 11505: cmp: command not found
    
    checking how to truncate binary pipes... /usr/bin/sed -e 4q
    checking for mt... no
    checking if : is a manifest tool... no
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -fno-rtti -fno-exceptions... ./configure: line 13248: diff: command not found
    no
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to produce PIC... -fPIC -DPIC
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc PIC flag -fPIC -DPIC works... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc static flag -static works... no
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -c -o file.o... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -c -o file.o... (cached) yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/g++ -E
    checking for ld used by /opt/fastnetmon-community/libraries/gcc1210/bin/g++... /usr/bin/ld -m elf_x86_64
    checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to produce PIC... -fPIC -DPIC
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ PIC flag -fPIC -DPIC works... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ static flag -static works... no
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports -c -o file.o... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports -c -o file.o... (cached) yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... (cached) GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether the linker supports version scripts... yes
    checking for egrep... (cached) /usr/bin/grep -E
    checking for fcntl.h... yes
    checking for inttypes.h... (cached) yes
    checking for limits.h... yes
    checking for stdlib.h... (cached) yes
    checking for unistd.h... (cached) yes
    checking for working memcmp... yes
    checking for working strtod... yes
    checking for ftruncate... yes
    checking for memset... yes
    checking for mkdir... yes
    checking for strchr... yes
    checking for strerror... yes
    checking for strtol... yes
    checking zlib version... headers missing or too old (requires 1.2.0.4)
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports C++11 features by default... yes
    checking whether -latomic is needed... no
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc is Clang... no
    checking whether pthreads work with "-pthread" and "-lpthread"... yes
    checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
    checking whether more special flags are required for pthreads... no
    checking for PTHREAD_PRIO_INHERIT... yes
    checking the location of hash_map... <unordered_map>
    checking whether -llog is needed... no
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating src/Makefile
    config.status: creating benchmarks/Makefile
    config.status: creating conformance/Makefile
    config.status: creating protobuf.pc
    config.status: creating protobuf-lite.pc
    config.status: creating config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    === configuring in third_party/googletest (/root/protobuf-21.12/third_party/googletest)
    configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/fastnetmon-community/libraries/protobuf_3_15_7'  'CC=/opt/fastnetmon-community/libraries/gcc1210/bin/gcc' 'CXX=/opt/fastnetmon-community/libraries/gcc1210/bin/g++' --cache-file=/dev/null --srcdir=.
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    === configuring in googletest (/root/protobuf-21.12/third_party/googletest/googletest)
    configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/fastnetmon-community/libraries/protobuf_3_15_7'  'CC=/opt/fastnetmon-community/libraries/gcc1210/bin/gcc' 'CXX=/opt/fastnetmon-community/libraries/gcc1210/bin/g++' --cache-file=/dev/null --srcdir=.
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking for gcc... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to enable C11 features... none needed
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... gcc3
    checking whether the compiler supports GNU C++... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/g++ accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to enable C++11 features... none needed
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/g++... gcc3
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/bin/ld option to reload object files... -r
    checking for file... file
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... no
    checking how to associate runtime and link libraries... printf %s\n
    checking for ar... ar
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from /opt/fastnetmon-community/libraries/gcc1210/bin/gcc object... ok
    checking for sysroot... no
    checking for a working dd... ./configure: line 7886: cmp: command not found
    ./configure: line 7886: cmp: command not found
    
    checking how to truncate binary pipes... /usr/bin/sed -e 4q
    checking for mt... no
    checking if : is a manifest tool... no
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -fno-rtti -fno-exceptions... ./configure: line 9659: diff: command not found
    no
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to produce PIC... -fPIC -DPIC
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc PIC flag -fPIC -DPIC works... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc static flag -static works... no
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -c -o file.o... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -c -o file.o... (cached) yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/g++ -E
    checking for ld used by /opt/fastnetmon-community/libraries/gcc1210/bin/g++... /usr/bin/ld -m elf_x86_64
    checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to produce PIC... -fPIC -DPIC
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ PIC flag -fPIC -DPIC works... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ static flag -static works... no
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports -c -o file.o... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports -c -o file.o... (cached) yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... (cached) GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking for python... :
    checking for the pthreads library -lpthreads... no
    checking whether pthreads work without any flags... no
    checking whether pthreads work with -Kthread... no
    checking whether pthreads work with -kthread... no
    checking for the pthreads library -llthread... no
    checking whether pthreads work with -pthread... yes
    checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
    checking if more special flags are required for pthreads... no
    checking whether to check for GCC pthread/shared inconsistencies... yes
    checking whether -pthread is sufficient with -shared... yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating scripts/gtest-config
    config.status: creating build-aux/config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    === configuring in googlemock (/root/protobuf-21.12/third_party/googletest/googlemock)
    configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/fastnetmon-community/libraries/protobuf_3_15_7'  'CC=/opt/fastnetmon-community/libraries/gcc1210/bin/gcc' 'CXX=/opt/fastnetmon-community/libraries/gcc1210/bin/g++' --cache-file=/dev/null --srcdir=.
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking for gcc... /opt/fastnetmon-community/libraries/gcc1210/bin/gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to enable C11 features... none needed
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... gcc3
    checking whether the compiler supports GNU C++... yes
    checking whether /opt/fastnetmon-community/libraries/gcc1210/bin/g++ accepts -g... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to enable C++11 features... none needed
    checking dependency style of /opt/fastnetmon-community/libraries/gcc1210/bin/g++... gcc3
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by /opt/fastnetmon-community/libraries/gcc1210/bin/gcc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/bin/ld option to reload object files... -r
    checking for file... file
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... no
    checking how to associate runtime and link libraries... printf %s\n
    checking for ar... ar
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from /opt/fastnetmon-community/libraries/gcc1210/bin/gcc object... ok
    checking for sysroot... no
    checking for a working dd... ./configure: line 7921: cmp: command not found
    ./configure: line 7921: cmp: command not found
    
    checking how to truncate binary pipes... /usr/bin/sed -e 4q
    checking for mt... no
    checking if : is a manifest tool... no
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -fno-rtti -fno-exceptions... ./configure: line 9690: diff: command not found
    no
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/gcc option to produce PIC... -fPIC -DPIC
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc PIC flag -fPIC -DPIC works... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc static flag -static works... no
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -c -o file.o... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/gcc supports -c -o file.o... (cached) yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... /opt/fastnetmon-community/libraries/gcc1210/bin/g++ -E
    checking for ld used by /opt/fastnetmon-community/libraries/gcc1210/bin/g++... /usr/bin/ld -m elf_x86_64
    checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking for /opt/fastnetmon-community/libraries/gcc1210/bin/g++ option to produce PIC... -fPIC -DPIC
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ PIC flag -fPIC -DPIC works... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ static flag -static works... no
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports -c -o file.o... yes
    checking if /opt/fastnetmon-community/libraries/gcc1210/bin/g++ supports -c -o file.o... (cached) yes
    checking whether the /opt/fastnetmon-community/libraries/gcc1210/bin/g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... (cached) GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking for python... :
    checking for the pthreads library -lpthreads... no
    checking whether pthreads work without any flags... no
    checking whether pthreads work with -Kthread... no
    checking whether pthreads work with -kthread... no
    checking for the pthreads library -llthread... no
    checking whether pthreads work with -pthread... yes
    checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
    checking if more special flags are required for pthreads... no
    checking whether to check for GCC pthread/shared inconsistencies... yes
    checking whether -pthread is sufficient with -shared... yes
    checking for gtest-config... no
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating scripts/gmock-config
    config.status: creating build-aux/config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    

    My expectations that it should be possible to build Protobuf library on system without system compiler as configure offers all options for it.

    Thank you!

    untriaged 
    opened by pavel-odintsov 2
  • Service definition with same name in different packages causes duplicate internal struct definition

    Service definition with same name in different packages causes duplicate internal struct definition

    What version of protobuf and what language are you using? Version: v3.19.4 Language: C++

    What operating system Windows 10

    What runtime / compiler are you using gcc 11.2

    What did you do? See also example PlcNextGrpcTest.zip Steps to reproduce the behavior:

    1. Create 2 proto files with same name in different directories. Content is the same or similar. Package is different for different namespaces. At least the service names in both files should be the same. See example: PlcNextGrpcTest\protos\Sample\world1\helloworld.proto and PlcNextGrpcTest\protos\Sample\world2\helloworld.proto
    2. use protobuf and C++ plugin to generate C++ stub code. Please find already generated code at PlcNextGrpcTest\GrpcSimpleClient\src\GrpcStubs
    3. Compile and link C++ code
    4. See error

    What did you expect to see Compile should succeed. No naming conflicts

    What did you see instead?

    error : CMakeFiles/GrpcSimpleClient.dir/src/GrpcStubs/world2/helloworld.pb.cc.o:(protodesc_cold+0x0): multiple definition of `TableStruct_helloworld_2eproto::offsets'; CMakeFiles/GrpcSimpleClient.dir/src/GrpcStubs/world1/helloworld.pb.cc.o:(protodesc_cold+0x0): first defined here(message from c:/sdks/.../11.2.0/real-ld.exe)
    error : CMakeFiles/GrpcSimpleClient.dir/src/GrpcStubs/world2/helloworld.pb.cc.o:C:/m_git/PlcNextGrpcTest/GrpcSimpleClient/src/GrpcStubs/world2/helloworld.pb.cc:87: multiple definition of `descriptor_table_helloworld_2eproto'; CMakeFiles/GrpcSimpleClient.dir/src/GrpcStubs/world1/helloworld.pb.cc.o:C:/.../PlcNextGrpcTest/GrpcSimpleClient/src/GrpcStubs/world1/helloworld.pb.cc:87: first defined here(message from c:/.../11.2.0/real-ld.exe)
    

    I wonder if the struct declaration and definition of TableStruct_helloworld_2eproto and definition of descriptor_table_helloworld_2eproto should be included in a namespace or its name should contain information of the package to make it unique.

    Anything else we should know about your project / environment

    • Attached example proto files are written as easy as possible. In our implementation we have different services with same name because of their purpose. But the messages inside are different.
    • Since the service names are defined as interface before we cannot simply change the names to make them unambiguously and avoid this problem.
    • Attached VS project uses a specific cross compile toolchain. You can use your gnu compiler instead if you need to compile the code.
    untriaged 
    opened by mgallathe 0
Releases(v21.12)
Owner
Protocol Buffers
A language-neutral, platform-neutral extensible mechanism for serializing structured data.
Protocol Buffers
simplejson is a simple, fast, extensible JSON encoder/decoder for Python

simplejson simplejson is a simple, fast, complete, correct and extensible JSON http://json.org encoder and decoder for Python 3.3+ with legacy suppo

1.5k Dec 31, 2022
Python wrapper around rapidjson

python-rapidjson Python wrapper around RapidJSON Authors: Ken Robbins [email prot

469 Jan 04, 2023
🦉 Modern high-performance serialization utilities for Python (JSON, MessagePack, Pickle)

srsly: Modern high-performance serialization utilities for Python This package bundles some of the best Python serialization libraries into one standa

Explosion 329 Dec 28, 2022
A lightweight library for converting complex objects to and from simple Python datatypes.

marshmallow: simplified object serialization marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, t

marshmallow-code 6.4k Jan 02, 2023
Protocol Buffers - Google's data interchange format

Protocol Buffers - Google's data interchange format Copyright 2008 Google Inc. https://developers.google.com/protocol-buffers/ Overview Protocol Buffe

Protocol Buffers 57.6k Jan 03, 2023
Python library for serializing any arbitrary object graph into JSON. It can take almost any Python object and turn the object into JSON. Additionally, it can reconstitute the object back into Python.

jsonpickle jsonpickle is a library for the two-way conversion of complex Python objects and JSON. jsonpickle builds upon the existing JSON encoders, s

1.1k Jan 02, 2023
Crappy tool to convert .scw files to .json and and vice versa.

SCW-JSON-TOOL Crappy tool to convert .scw files to .json and vice versa. How to use Run main.py file with two arguments: python main.py scw2json or j

Fred31 5 May 14, 2021
FlatBuffers: Memory Efficient Serialization Library

FlatBuffers FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serializ

Google 19.6k Jan 01, 2023
Ultra fast JSON decoder and encoder written in C with Python bindings

UltraJSON UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.6+. Install with pip: $ python -m pip insta

3.9k Jan 02, 2023
MessagePack serializer implementation for Python msgpack.org[Python]

MessagePack for Python What's this MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JS

MessagePack 1.7k Dec 29, 2022
serialize all of python

dill serialize all of python About Dill dill extends python's pickle module for serializing and de-serializing python objects to the majority of the b

The UQ Foundation 1.8k Jan 07, 2023
Python bindings for the simdjson project.

pysimdjson Python bindings for the simdjson project, a SIMD-accelerated JSON parser. If SIMD instructions are unavailable a fallback parser is used, m

Tyler Kennedy 562 Jan 08, 2023
Extended pickling support for Python objects

cloudpickle cloudpickle makes it possible to serialize Python constructs not supported by the default pickle module from the Python standard library.

1.3k Jan 05, 2023
Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy

orjson orjson is a fast, correct JSON library for Python. It benchmarks as the fastest Python library for JSON and is more correct than the standard j

4.1k Dec 30, 2022
Corset is a web-based data selection portal that helps you getting relevant data from massive amounts of parallel data.

Corset is a web-based data selection portal that helps you getting relevant data from massive amounts of parallel data. So, if you don't need the whole corpus, but just a suitable subset (indeed, a c

13 Nov 10, 2022
Generic ASN.1 library for Python

ASN.1 library for Python This is a free and open source implementation of ASN.1 types and codecs as a Python package. It has been first written to sup

Ilya Etingof 223 Dec 11, 2022