[zeromq-dev] ZMQ appends weird characters to message

gonzalo diethelm gdiethelm at dcv.cl
Mon Sep 15 19:51:09 CEST 2014


You see, this is why it always helps to ask for a minimal code sample; it helps you refine your thoughts and it helps us to reason about your code.

You should look into the functions that implement a message’s lifecycle. You can play with the function that gets called automatically after a message has been sent, and release memory from there.

[This is all talking from memory, I have no access to good documentation right now.]

--
Gonzalo Diethelm
DCV Chile

From: zeromq-dev-bounces at lists.zeromq.org [mailto:zeromq-dev-bounces at lists.zeromq.org] On Behalf Of Thomas Rodgers
Sent: Monday, September 15, 2014 2:31 PM
To: ZeroMQ development list
Subject: Re: [zeromq-dev] ZMQ appends weird characters to message

Message goes out of scope, destructor called, receiving side is getting a pointer to a free'd heap block.

On Mon, Sep 15, 2014 at 10:27 AM, Dávid Kaya <mail at davidkaya.sk<mailto:mail at davidkaya.sk>> wrote:
Here is that function: http://pastebin.com/AgUuDqqK .


On 15.09.2014 19:19, gonzalo diethelm wrote:
> Without seeing any actual code, it is impossible to say.
>
> --
> Gonzalo Diethelm
> DCV Chile
>
>> -----Original Message-----
>> From: zeromq-dev-bounces at lists.zeromq.org<mailto:zeromq-dev-bounces at lists.zeromq.org> [mailto:zeromq-dev-<mailto:zeromq-dev->
>> bounces at lists.zeromq.org<mailto:bounces at lists.zeromq.org>] On Behalf Of Dávid Kaya
>> Sent: Monday, September 15, 2014 2:18 PM
>> To: ZeroMQ development list
>> Subject: Re: [zeromq-dev] ZMQ appends weird characters to message
>>
>> If it would be because of memory, the std::string.replace() would
>> not fix,
>> would it? Everything is done in one function, I don't think this is
>> the problem.
>>
>>
>> On 15.09.2014 19:11, gonzalo diethelm wrote:
>> > That usually happens... Try to focus on the differences between
>> your
>> > short example and your real code.
>> >
>> > One point to focus on could be memory management: are you sure the
>> > messages you are sending are actually surviving until they get
>> sent?
>> > A
>> > simple wrong way to manage this would be putting your messages in
>> an
>> > automatic variable that gets overwritten when you leave the
>> function
>> > that sends the message. Another wrong way would be using a static
>> > buffer for your messages, that gets overwritten with each message.
>> >
>> > HTH.
>> >
>> > --
>> > Gonzalo Diethelm
>> > DCV Chile
>> >
>> >> -----Original Message-----
>> >> From: zeromq-dev-bounces at lists.zeromq.org<mailto:zeromq-dev-bounces at lists.zeromq.org> [mailto:zeromq-dev-<mailto:zeromq-dev->
>> >> bounces at lists.zeromq.org<mailto:bounces at lists.zeromq.org>] On Behalf Of Dávid Kaya
>> >> Sent: Monday, September 15, 2014 2:02 PM
>> >> To: ZeroMQ development list
>> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters to message
>> >>
>> >> Well I tried to recreate the problem but it works as intended in
>> my
>> >> short example. I really don't know where could be the problem
>> since I
>> >> am doing it exactly the same way in my example as in my
>> application.
>> >> Maybe the problem is in the std::string, because when I use
>> >> std::string.replace() to replace some characters in the URL then
>> it
>> >> works fine.
>> >> But when I dont use it and append the URL to "success:"
>> >> message right away, then it does not work. So maybe
>> >> std::string.replace() somehow fixes the string when it rearranges
>> it.
>> >> The first problem with "login" was because I wasn't using size()
>> in
>> >> string constructor.
>> >>
>> >> David
>> >>
>> >> On 15.09.2014 17:56, gonzalo diethelm wrote:
>> >> > Please create a short (as short as possible) example that shows
>> >> this
>> >> > symptom, and post it to the list.
>> >> >
>> >> > --
>> >> > Gonzalo Diethelm
>> >> > DCV Chile
>> >> >
>> >> >> -----Original Message-----
>> >> >> From: zeromq-dev-bounces at lists.zeromq.org<mailto:zeromq-dev-bounces at lists.zeromq.org> [mailto:zeromq-dev-<mailto:zeromq-dev->
>> >> >> bounces at lists.zeromq.org<mailto:bounces at lists.zeromq.org>] On Behalf Of Dávid Kaya
>> >> >> Sent: Monday, September 15, 2014 12:39 PM
>> >> >> To: ZeroMQ development list
>> >> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters to
>> message
>> >> >>
>> >> >> Yes, I've printed that message. There can't be any NULL byte
>> >> there.
>> >> >> It is string
>> >> >> "success:" appended with url. It is normal url like
>> >> >> "http://example.org/path/to/jsp?lang=en_US?session="session id
>> >> here".
>> >> >> That session ID contains numbers, characters and dashes.
>> >> >>
>> >> >>
>> >> >> On 15.09.2014 17:30, gonzalo diethelm wrote:
>> >> >> > No, this is not a (known) limitation. Did you print exactly
>> >> what
>> >> >> you
>> >> >> > are sending and what you are receiving? My guess is you are
>> >> >> putting a
>> >> >> > null byte in the middle of what you are sending.
>> >> >> >
>> >> >> > --
>> >> >> > Gonzalo Diethelm
>> >> >> > DCV Chile
>> >> >> >
>> >> >> >> -----Original Message-----
>> >> >> >> From: zeromq-dev-bounces at lists.zeromq.org<mailto:zeromq-dev-bounces at lists.zeromq.org>
>> [mailto:zeromq-dev-<mailto:zeromq-dev->
>> >> >> >> bounces at lists.zeromq.org<mailto:bounces at lists.zeromq.org>] On Behalf Of Dávid Kaya
>> >> >> >> Sent: Monday, September 15, 2014 12:21 PM
>> >> >> >> To: zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> >> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters to
>> >> message
>> >> >> >>
>> >> >> >> Well, I've printed out size and it is correct. I've also
>> >> >> shortened
>> >> >> >> the message by 5 characters and it stopped cutting off the
>> >> last
>> >> >> >> characters (atleast I think it stopped, tried 15 times and
>> it
>> >> >> came
>> >> >> >> correct every time). So I think the problem was in the
>> length
>> >> of
>> >> >> the
>> >> >> >> message. I don't know if it is a bug in ZMQ or system
>> >> limitation
>> >> >> of
>> >> >> >> socket files?
>> >> >> >>
>> >> >> >> David
>> >> >> >>
>> >> >> >>
>> >> >> >> On 15.09.2014 16:47, gonzalo diethelm wrote:
>> >> >> >> > Good point. Forgot about the specific details for that
>> C++
>> >> >> >> > constructor. The null byte should not be required.
>> >> >> >> >
>> >> >> >> > As Tom points out, you should print out what you are
>> sending
>> >> >> and
>> >> >> >> > receiving (contents and length) and make sure it makes
>> >> sense.
>> >> >> >> >
>> >> >> >> > HTH.
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Gonzalo Diethelm
>> >> >> >> > DCV Chile
>> >> >> >> >
>> >> >> >> >> -----Original Message-----
>> >> >> >> >> From: zeromq-dev-bounces at lists.zeromq.org<mailto:zeromq-dev-bounces at lists.zeromq.org>
>> >> [mailto:zeromq-dev-<mailto:zeromq-dev->
>> >> >> >> >> bounces at lists.zeromq.org<mailto:bounces at lists.zeromq.org>] On Behalf Of Tom Quarendon
>> >> >> >> >> Sent: Monday, September 15, 2014 11:42 AM
>> >> >> >> >> To: ZeroMQ development list
>> >> >> >> >> Subject: Re: [zeromq-dev] ZMQ appends weird characters
>> to
>> >> >> message
>> >> >> >> >>
>> >> >> >> >> > You have two choices:
>> >> >> >> >> > 1. Send the '\0' as part of the message (and set
>> length
>> >> to
>> >> >> one
>> >> >> >> >> more byte).
>> >> >> >> >> > 2. Append a '\0' after receiving the message.
>> >> >> >> >>
>> >> >> >> >> Uh, why?
>> >> >> >> >> string(static_cast<char*>(reply.data()),reply.size());
>> >> >> >> >> doesn't assume the string is null terminated. It
>> constructs
>> >> >> >> string
>> >> >> >> >> from pointer and length. Isn't adding a in a null just
>> >> going
>> >> >> mask
>> >> >> >> the
>> >> >> >> >> real issue and make it look like the std::string only
>> >> >> contained
>> >> >> >> >> "login" when really it still contained the extra stuff
>> as
>> >> >> well.
>> >> >> >> >> David, Do you know what reply.size() actually contains?
>> >> Have
>> >> >> you
>> >> >> >> >> tried printing that out and comparing it to what you
>> >> expect?
>> >> >> >> >>
>> >> >> >> >> _______________________________________________
>> >> >> >> >> zeromq-dev mailing list
>> >> >> >> >> zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> >> >> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > -----------------------------------------
>> >> >> >> > Declaración de confidencialidad: Este Mensaje esta
>> destinado
>> >> >> para
>> >> >> >> el
>> >> >> >> > uso de la o las personas o entidades a quien ha sido
>> >> dirigido y
>> >> >> >> puede
>> >> >> >> > contener información reservada y confidencial que no
>> puede
>> >> ser
>> >> >> >> > divulgada, difundida, ni aprovechada en forma alguna. El
>> uso
>> >> no
>> >> >> >> > autorizado de la información contenida en este correo
>> podrá
>> >> ser
>> >> >> >> > sancionado de conformidad con la ley chilena.
>> >> >> >> > Si usted ha recibido este correo electrónico por error,
>> le
>> >> >> pedimos
>> >> >> >> > eliminarlo junto con los archivos adjuntos y avisar
>> >> >> inmediatamente
>> >> >> >> al
>> >> >> >> > remitente, respondiendo este mensaje.
>> >> >> >> >
>> >> >> >> > "Before printing this e-mail think if is really
>> necesary".
>> >> >> >> > Disclosure: This Message is to be used by the individual,
>> >> >> >> individuals
>> >> >> >> > or entities that it is addressed to and may include
>> private
>> >> and
>> >> >> >> > confidential information that may not be disclosed, made
>> >> public
>> >> >> >> nor
>> >> >> >> > used in any way at all. Unauthorized use of the
>> information
>> >> in
>> >> >> >> this
>> >> >> >> > electronic mail message may be subject to the penalties
>> set
>> >> >> forth
>> >> >> >> by
>> >> >> >> > Chilean law.
>> >> >> >> > If you have received this electronic mail message in
>> error,
>> >> we
>> >> >> ask
>> >> >> >> you
>> >> >> >> > to destroy the message and its attached file(s) and to
>> >> >> immediately
>> >> >> >> > notify the sender by answering this message.
>> >> >> >> > _______________________________________________
>> >> >> >> > zeromq-dev mailing list
>> >> >> >> > zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> >> >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >> >> >>
>> >> >> >> _______________________________________________
>> >> >> >> zeromq-dev mailing list
>> >> >> >> zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> >> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >> >> >
>> >> >> > -----------------------------------------
>> >> >> > Declaración de confidencialidad: Este Mensaje esta destinado
>> >> para
>> >> >> el
>> >> >> > uso de la o las personas o entidades a quien ha sido
>> dirigido y
>> >> >> puede
>> >> >> > contener información reservada y confidencial que no puede
>> ser
>> >> >> > divulgada, difundida, ni aprovechada en forma alguna. El uso
>> no
>> >> >> > autorizado de la información contenida en este correo podrá
>> ser
>> >> >> > sancionado de conformidad con la ley chilena.
>> >> >> > Si usted ha recibido este correo electrónico por error, le
>> >> pedimos
>> >> >> > eliminarlo junto con los archivos adjuntos y avisar
>> >> inmediatamente
>> >> >> al
>> >> >> > remitente, respondiendo este mensaje.
>> >> >> >
>> >> >> > "Before printing this e-mail think if is really necesary".
>> >> >> > Disclosure: This Message is to be used by the individual,
>> >> >> individuals
>> >> >> > or entities that it is addressed to and may include private
>> and
>> >> >> > confidential information that may not be disclosed, made
>> public
>> >> >> nor
>> >> >> > used in any way at all. Unauthorized use of the information
>> in
>> >> >> this
>> >> >> > electronic mail message may be subject to the penalties set
>> >> forth
>> >> >> by
>> >> >> > Chilean law.
>> >> >> > If you have received this electronic mail message in error,
>> we
>> >> ask
>> >> >> you
>> >> >> > to destroy the message and its attached file(s) and to
>> >> immediately
>> >> >> > notify the sender by answering this message.
>> >> >> > _______________________________________________
>> >> >> > zeromq-dev mailing list
>> >> >> > zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >> >>
>> >> >> _______________________________________________
>> >> >> zeromq-dev mailing list
>> >> >> zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >> > _______________________________________________
>> >> > zeromq-dev mailing list
>> >> > zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>
>> >> _______________________________________________
>> >> zeromq-dev mailing list
>> >> zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >
>> > -----------------------------------------
>> > Declaración de confidencialidad: Este Mensaje esta destinado para
>> el
>> > uso de la o las personas o entidades a quien ha sido dirigido y
>> puede
>> > contener información reservada y confidencial que no puede ser
>> > divulgada, difundida, ni aprovechada en forma alguna. El uso no
>> > autorizado de la información contenida en este correo podrá ser
>> > sancionado de conformidad con la ley chilena.
>> > Si usted ha recibido este correo electrónico por error, le pedimos
>> > eliminarlo junto con los archivos adjuntos y avisar inmediatamente
>> al
>> > remitente, respondiendo este mensaje.
>> >
>> > "Before printing this e-mail think if is really necesary".
>> > Disclosure: This Message is to be used by the individual,
>> individuals
>> > or entities that it is addressed to and may include private and
>> > confidential information that may not be disclosed, made public
>> nor
>> > used in any way at all. Unauthorized use of the information in
>> this
>> > electronic mail message may be subject to the penalties set forth
>> by
>> > Chilean law.
>> > If you have received this electronic mail message in error, we ask
>> you
>> > to destroy the message and its attached file(s) and to immediately
>> > notify the sender by answering this message.
>> > _______________________________________________
>> > zeromq-dev mailing list
>> > zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
> -----------------------------------------
> Declaración de confidencialidad: Este Mensaje esta destinado para
> el uso de la o las personas o entidades a quien ha sido dirigido y
> puede contener información reservada y confidencial que no puede
> ser divulgada, difundida, ni aprovechada en forma alguna. El uso no
> autorizado de la información contenida en este correo podrá ser
> sancionado de conformidad con la ley chilena.
> Si usted ha recibido este correo electrónico por error, le pedimos
> eliminarlo junto con los archivos adjuntos y avisar inmediatamente
> al remitente, respondiendo este mensaje.
>
> "Before printing this e-mail think if is really necesary".
> Disclosure: This Message is to be used by the individual,
> individuals or entities that it is addressed to and may include
> private and confidential information that may not be disclosed,
> made public nor used in any way at all. Unauthorized use of the
> information in this electronic mail message may be subject to the
> penalties set forth by Chilean law.
> If you have received this electronic mail message in error, we ask
> you to destroy the message and its attached file(s) and to
> immediately notify the sender by answering this message.
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev

_______________________________________________
zeromq-dev mailing list
zeromq-dev at lists.zeromq.org<mailto:zeromq-dev at lists.zeromq.org>
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


----------------------------------------- 
Declaración de confidencialidad: Este Mensaje esta destinado para
el uso de la o las personas o entidades a quien ha sido dirigido y
puede contener información reservada y confidencial que no puede
ser divulgada, difundida, ni aprovechada en forma alguna. El uso no
autorizado de la información contenida en este correo podrá ser
sancionado de conformidad con la ley chilena. 
Si usted ha recibido este correo electrónico por error, le pedimos
eliminarlo junto con los archivos adjuntos y avisar inmediatamente
al remitente, respondiendo este mensaje. 

"Before printing this e-mail think if is really necesary".
Disclosure: This Message is to be used by the individual,
individuals or entities that it is addressed to and may include
private and confidential information that may not be disclosed,
made public nor used in any way at all. Unauthorized use of the
information in this electronic mail message may be subject to the
penalties set forth by Chilean law. 
If you have received this electronic mail message in error, we ask
you to destroy the message and its attached file(s) and to
immediately notify the sender by answering this message. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140915/dfa633b1/attachment.htm>


More information about the zeromq-dev mailing list