Date: Fri, 18 Jan 2008 11:54:39 +0200 From: John Hay <jhay@meraka.org.za> To: freebsd-arm@freebsd.org Cc: des@freebsd.org Subject: Re: sshd broken on arm? Message-ID: <20080118095439.GA5677@zibbi.meraka.csir.co.za> In-Reply-To: <20080117105854.GA44923@zibbi.meraka.csir.co.za> References: <20080117105854.GA44923@zibbi.meraka.csir.co.za>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jan 17, 2008 at 12:58:54PM +0200, John Hay wrote: > Hi Guys, > > I just did a new build using RELENG_7 for the arm (Avila boards) and then > found that I cannot ssh into them. The sshd crash with a bus error just > after you entered your username and password. My build of mid November > did not do it. Anybody got ideas? > > The last part of "sshd -Dddd" on the arm board looks like this: > > debug1: server_input_channel_req: channel 0 request pty-req reply 0 > debug1: session_by_channel: session 0 channel 0 > debug1: session_input_channel_req: session 0 req pty-req > debug1: Allocating pty. > debug3: mm_request_send entering: type 25 > debug3: monitor_read: checking request 25 > debug3: mm_answer_pty entering > debug1: session_new: init > debug1: session_new: session 0 > debug3: mm_pty_allocate: waiting for MONITOR_ANS_PTY > debug3: mm_request_receive_expect entering: type 26 > debug3: mm_request_receive entering > debug3: mm_request_send entering: type 26 > ssh_mm_receive_fd: recvmsg: expected received 1 got 0 > debug1: do_cleanup > debug1: PAM: cleanup > Bus error (core dumped) > debug3: PAM: sshpam_thread_cleanup entering Ok, I found the problem. It looks like something changed and now the alignment for the char tmp[...] array in monitor_fdpass.c:mm_send_fd and monitor_fdpass.c:mm_receive_fd is different and the arm processors do not like it. Attached is my quick fix. One question that I have is if we should just fix all of these "problems" or should something be changed so that these things are aligned again? In the last month or two I have come across quite a few of these things that used to work on the arm and now do not anymore because of alignment changes. (I have cc'ed des@ because his name pitch up a lot in the openssh cvs logs. :-) John -- John Hay -- John.Hay@meraka.csir.co.za / jhay@FreeBSD.org Index: monitor_fdpass.c =================================================================== RCS file: /home/ncvs/src/crypto/openssh/monitor_fdpass.c,v retrieving revision 1.1.1.7 diff -u -r1.1.1.7 monitor_fdpass.c --- monitor_fdpass.c 10 Nov 2006 16:38:34 -0000 1.1.1.7 +++ monitor_fdpass.c 18 Jan 2008 08:45:19 -0000 @@ -49,7 +49,7 @@ char ch = '\0'; ssize_t n; #ifndef HAVE_ACCRIGHTS_IN_MSGHDR - char tmp[CMSG_SPACE(sizeof(int))]; + char tmp[CMSG_SPACE(sizeof(int)) + sizeof(int)]; struct cmsghdr *cmsg; #endif @@ -58,7 +58,7 @@ msg.msg_accrights = (caddr_t)&fd; msg.msg_accrightslen = sizeof(fd); #else - msg.msg_control = (caddr_t)tmp; + msg.msg_control = (caddr_t)(_ALIGN(tmp)); msg.msg_controllen = CMSG_LEN(sizeof(int)); cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_len = CMSG_LEN(sizeof(int)); @@ -94,7 +94,7 @@ char ch; int fd; #ifndef HAVE_ACCRIGHTS_IN_MSGHDR - char tmp[CMSG_SPACE(sizeof(int))]; + char tmp[CMSG_SPACE(sizeof(int)) + sizeof(int)]; struct cmsghdr *cmsg; #endif @@ -107,8 +107,8 @@ msg.msg_accrights = (caddr_t)&fd; msg.msg_accrightslen = sizeof(fd); #else - msg.msg_control = tmp; - msg.msg_controllen = sizeof(tmp); + msg.msg_control = (caddr_t)(_ALIGN(tmp)); + msg.msg_controllen = CMSG_LEN(sizeof(int)); #endif if ((n = recvmsg(sock, &msg, 0)) == -1)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080118095439.GA5677>