Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Dec 2013 19:24:19 +0200
From:      Guy Yur <guyyur@gmail.com>
To:        freebsd-arm@freebsd.org
Subject:   10.0-RC1: net/mpd5 crashes in NgMkSockNode due to stack alignment on ARM EABI
Message-ID:  <CAC67Hz82VBT1_BBH6E18ycDxUdWbgFcahNo1W0kH-TcH7iB=8Q@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--089e011606003e923e04ee0eaac1
Content-Type: text/plain; charset=UTF-8

Hi,

I am running 10.0-RC1 on the BeagleBone Black and the net/mpd5 port is
crashing in libnetgraph NgMkSockNode due to stack alignment.

10.0-RC1 World and kernel were compiled in a VirtualBox VM running
9.2-RELEASE-p2 i386.
clang and ARM_EABI used as the default make options.

Added prints in NgMkSockNode show rbuf is aligned on 2-byte and not
4-byte which is needed to access ni->id (a uint32_t).

ni = 0xbfffe87a
rbuf = 0xbfffe842
sizeof(resp->header) = 56


(gdb) bt
#0  0x201529a0 in NgMkSockNode (name=<value optimized out>, csp=0xbfffe95c,
    dsp=0xbfffe958) at /usr/src/lib/libnetgraph/sock.c:134
#1  0x00037b9c in MppcTestCap () at ccp_mppc.c:754
#2  0x0007c1f4 in main (ac=4, av=0xbfffeb90) at main.c:248
#3  0x0000d1b0 in __start (argc=4, argv=0xbfffeb90, env=0xbfffeba4,
    ps_strings=<value optimized out>, obj=<value optimized out>,
    cleanup=<value optimized out>) at /usr/src/lib/csu/arm/crt1.c:115
#4  0x203e9dc0 in _thr_ast (curthread=0x200fd000)
    at /usr/src/lib/libthr/thread/thr_sig.c:265


Putting rbuf in a union with struct ng_mesg sorted the alignment to
4-byte and mpd5 didn't crash.
I attached the changes I used to test mpd5 doesn't crash with correct alignment.


Regards,
Guy

--089e011606003e923e04ee0eaac1
Content-Type: application/octet-stream; name="sock-NgMkSockNode.patch"
Content-Disposition: attachment; filename="sock-NgMkSockNode.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hph47tdv0

SW5kZXg6IGxpYi9saWJuZXRncmFwaC9zb2NrLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYm5ldGdy
YXBoL3NvY2suYwkocmV2aXNpb24gMjU5MjUwKQorKysgbGliL2xpYm5ldGdyYXBoL3NvY2suYwko
d29ya2luZyBjb3B5KQpAQCAtMTExLDggKzExMSwxMSBAQAogCQkvKiBTYXZlIG5vZGUgbmFtZSAq
LwogCQlzdHJsY3B5KG5hbWVidWYsIG5hbWUsIHNpemVvZihuYW1lYnVmKSk7CiAJfSBlbHNlIGlm
IChkc3AgIT0gTlVMTCkgewotCQl1X2NoYXIgcmJ1ZltzaXplb2Yoc3RydWN0IG5nX21lc2cpICsg
c2l6ZW9mKHN0cnVjdCBub2RlaW5mbyldOwotCQlzdHJ1Y3QgbmdfbWVzZyAqY29uc3QgcmVzcCA9
IChzdHJ1Y3QgbmdfbWVzZyAqKSByYnVmOworCQl1bmlvbiB7CisJCQl1X2NoYXIgcmJ1ZltzaXpl
b2Yoc3RydWN0IG5nX21lc2cpICsgc2l6ZW9mKHN0cnVjdCBub2RlaW5mbyldOworCQkJc3RydWN0
IG5nX21lc2cgcmVzOworCQl9IHJlczsKKwkJc3RydWN0IG5nX21lc2cgKmNvbnN0IHJlc3AgPSAo
c3RydWN0IG5nX21lc2cgKikgcmVzLnJidWY7CiAJCXN0cnVjdCBub2RlaW5mbyAqY29uc3Qgbmkg
PSAoc3RydWN0IG5vZGVpbmZvICopIHJlc3AtPmRhdGE7CiAKIAkJLyogRmluZCBvdXQgdGhlIG5v
ZGUgSUQgKi8KQEAgLTEyMyw3ICsxMjYsNyBAQAogCQkJCU5HTE9HKCJzZW5kIG5vZGVpbmZvIik7
CiAJCQlnb3RvIGVycm91dDsKIAkJfQotCQlpZiAoTmdSZWN2TXNnKGNzLCByZXNwLCBzaXplb2Yo
cmJ1ZiksIE5VTEwpIDwgMCkgeworCQlpZiAoTmdSZWN2TXNnKGNzLCByZXNwLCBzaXplb2YocmVz
LnJidWYpLCBOVUxMKSA8IDApIHsKIAkJCWVycm5vc3YgPSBlcnJubzsKIAkJCWlmIChfZ05nRGVi
dWdMZXZlbCA+PSAxKQogCQkJCU5HTE9HKCJyZWN2IG5vZGVpbmZvIik7Cg==
--089e011606003e923e04ee0eaac1--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAC67Hz82VBT1_BBH6E18ycDxUdWbgFcahNo1W0kH-TcH7iB=8Q>