Re: Strange Segfault with V 0.9.3 an MinGW Cross Compile
- Subject: Re: Strange Segfault with V 0.9.3 an MinGW Cross Compile
- From: Skalák, Zdeněk <zskalak@xxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 15 Jan 2020 10:02:52 +0100
- To: libssh@xxxxxxxxxx
On Wed, Jan 15, 2020 at 9:48 AM <g4-lisz@xxxxxxxxxxxx> wrote:
> On 15.01.20 08:27, Andreas Schneider wrote:
> > On Wednesday, 15 January 2020 01:22:13 CET g4-lisz@xxxxxxxxxxxx wrote:
> >> I cross compiled V 0.9.3 with MinGW on Ubuntu. The compilation worked
> >> flawlessly.
> >> But when I run my code linked to the resulting libssh.dll, it crashes
> >> immediately when I set verbosity to > 2.
> >> I could track this down to vsnprintf() which is called through line 865
> >> in channels.c:
> >> SSH_LOG(SSH_LOG_PACKET,
> >> "placing %zu bytes into channel buffer (%s)",
> >> len,
> >> s_stderr ? "stderr" : "stdout");
> > Try s_stderr -> is_stderr
> Hi Andreas,
> Haha that would be a silly issue, when the compiler would not complain
> about this...
> Sorry, I somehow lost the 'i' when I pasted the code into the mail.
I can imagine two things which could went wrong:
a) libstdc (or whomever implements the vsnprintf()) doesn't know the `%zu`
format, so this one is skipped and the `len` argument is used for the (%s)
b) 32/64 bit mismatch - the format (count of bytes) of the `len` on the
stack doesn't correspond to the format (count of bytes) of the `%zu`
specifier, so for the second (%s) format, some `grabage from the stack` is
Both these two scenarios can lead to mysterious crashes ....
Zdenek OGAR Skalak
Ing. Zdeněk OGAR Skalák
Monet+ a.s. <http://www.monetplus.cz>
Za Dvorem 505, 763 14 Zlín - Štípa, CZ
Tel: +420 / 577 110 411, Fax: +420 / 577 914 557
Archive administrator: firstname.lastname@example.org