delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2016/02/11/18:20:27

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:in-reply-to:references:date
:message-id:subject:from:to:content-type; q=dns; s=default; b=Lo
N2qGppZe6BNtKJnuIhBwbMfkBCoyeGY3CI2iwGde7OYAv5IKXNLyt6bf6ofbP3ba
XPBQeYH3qalCsp43dR/sip5CfCWHH7Rtc1A5Xwy1FS5Znqmb1/n66zNRBGQI60Ta
cGf5k9krWMQEIlVvniNIZwf+Xkq4qHdV9Df34YCRU=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:in-reply-to:references:date
:message-id:subject:from:to:content-type; s=default; bh=ayw5KSYS
RMltB8a0RkoCDqmvpsA=; b=WxBc6UAcEy2dXWett/nPHIchIrm1PTfbZM6F5V8v
kBQcX4s1mG0cHkA+9fkZ6Fp2m0soklbm9Cc4FpYvNuiojikHP9YcRAuCnLlp5qq1
mIPkxRZQpD5RKzx+AUPRNUysTcwRQ8amYo2N5mFXTGsukvxl1BK8SR5yJ9/1G2Al
dCM=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=Wiszkowski, wiszkowski, H*f:dW5w, H*i:dW5w
X-HELO: mail-vk0-f43.google.com
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=niNGpdOkCEk+UVIMopO4jUPvqj1p1jt2xP5W6TlfDlU=; b=JmGxEBbxpnZPIZAFq9XJ6hOuR62Iphu45EooPAW+d4DiOjbXxx3ebr4I6GVqxVT45z QbAcAGzgxEv3FU9DKvAwJ8VE6ZcRJFLw9dQaggqzOw6I9ERbo84Mq2kE20n3fissE161 ub4B2GIwwd3hxVjqoKnpE5nEBgBfqzZY03o8gipPOHI3agG0ohIQZMRKoG4Kt7VvLLOr Qf23KiCo5STvEjwO7I3n1IJO/l9CbS1aQsV8NERWLTXzjnOiNBIsTrsz2cUonb5dThC+ qRWs3sDBz+1TZs+BD/JawS5z3Gpw/Bhaq20DTZfnji7x6s4GOY4ID7zPgaNjKjPC5dkk W0ew==
X-Gm-Message-State: AG10YOTS4SuDFh0W+qBuLLFgwsboN2r84FoQI0OYbdsMJ/GDi4LYZxYXc+407eKdDJDUkobHFeuAPO1Ep8IN2Q==
MIME-Version: 1.0
X-Received: by 10.31.16.37 with SMTP id g37mr977583vki.97.1455232806197; Thu, 11 Feb 2016 15:20:06 -0800 (PST)
In-Reply-To: <CAPqrHhodtegz8sDm4jzX=2dko3AcT8wWbw+dW5w+XAH4Js-M1g@mail.gmail.com>
References: <CAPqrHhp4haccefOLiD56cR-e5OXOrfpeNH7V__km7CPpN2sdOA AT mail DOT gmail DOT com> <CAPqrHhodtegz8sDm4jzX=2dko3AcT8wWbw+dW5w+XAH4Js-M1g AT mail DOT gmail DOT com>
Date: Thu, 11 Feb 2016 15:20:06 -0800
Message-ID: <CAPqrHhqeBD1ho_CFjUTHT+NbZnftrKJ0Qj9+OEuXBMf2BWU2Xw@mail.gmail.com>
Subject: Re: Protobuf string serialization bug with statically linked protobuf 2.5.0
From: Tomasz Wiszkowski <tomasz DOT wiszkowski AT gmail DOT com>
To: cygwin AT cygwin DOT com

A brief correction.

I tried to identify further the problem by selectively linking
libraries. (-Wl,-Bstatic -lprotobuf.dll -Wl,-Bdynamic) and it turns
out the problem emerges the moment i statically link both protobuf
_and_ the c++ library. linking everything statically except for libc++
seems to work just fine.

i checked if protobuf loads cygc++-6 separately, which would easily
explain the problem, but it does not seem to. the problem clearly
seems to be interaction between these two.

linking libc++ dynamically resolves the problem, but that would also
mean shipping the software with artificial add-on... i suspect
recompilation still might resolve the issue...


--
"My definition of an expert in any field is a person who knows enough
about what's really going on to be scared" - P. J. Plauger


2016-02-10 10:54 GMT-08:00 Tomasz Wiszkowski <tomasz DOT wiszkowski AT gmail DOT com>:
> Dear all,
>
> I'm having problems with statically linked executables that use
> protocol buffers.
> I suspect the problem may be related to incompatibility between
> std::string implementation used to compile the library vs. current. If
> that's the case, the problem would likely go away with recompilation
> of the protocol buffer libraries (protobuf-lite is also exposing the
> same problem).
>
> I have attached a test case as you requested. the example program
> compiles two variants - one dynamically linked (works fine) and one
> statically linked that crashes upon first attempt to serialize the
> protocol buffer.
>
> It would be great if someone could take a look and possibly rebuild
> the static libraries for protocol buffers.
>
> Best regards,
> Tomasz
>
> -------- example.proto ------------
> syntax = "proto2";
>
> package example;
>
> message ExampleMsg {
>   optional int32 argc = 1;
>   optional string argv0 = 2;
> };
>
> -------- main.cc ------------
> #include <iostream>
> #include <string>
>
> #include "example.pb.h"
>
> int main(int argc, char** argv) {
>   example::ExampleMsg message;
>
>   message.set_argc(argc);
>   message.set_argv0(argv[0]);
>
>   std::cout << "Serializing protocol buffer." << std::endl;
>   std::string serialized;
>   message.SerializeToString(&serialized);  // static variant crashes here.
>   std::cout << "Serialized length: " << serialized.length() << std::endl;
>
>   message.Clear();
>
>   std::cout << "Deserializing protocol buffer." << std::endl;
>   message.ParseFromString(serialized);  // static variant also crashes here.
>   std::cout << "Deserialized content: argc=" << message.argc() << ", argv0="
>             << message.argv0();
>
>   return 0;
> }
>
> -------- Makefile ------------
> CFLAGS += -Wall
> CXXFLAGS := $(CFLAGS)
> CC = g++
> LIBS = -lprotobuf.dll
>
> all: clean example example-bug
>
> example.pb.cc: example.proto
>         protoc --cpp_out=. $^
>
> clean:
>         rm -f *.o *.pb.* *.exe*
>
> example: example.pb.o main.o
>         $(CC) $(CFLAGS) $^ -o $@ $(LIBS)
>
> example-bug: example.pb.o main.o
>         $(CC) $(CFLAGS) -static $^ -o $@ $(LIBS)

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019