Re: hg clone segmentation fault on octeon
No problem. I was asking because I think that the problem is on python or maybe on libressl, not on mercurial. Mercurial has very few C files and they don't use C for that part of the clone, just simple python code. If you can't run the full tests set, you could also find some small python example which crashes when it tries to connect to https. That would be enough. Meanwhile, if you need to use mercurial, try with ssh:// repos and avoid the https:// ones. On Sat, May 19, 2018 at 01:48:30PM -0700, Nick Owens wrote: > my ERL is very sad and slow with a 500mhz cpu/512M ram and the usb drive is > very sad and slow at around 1-2MB/s throughput. > > i will see about getting ports going on it, but it may take a while, if it > even works. > > > On Sat, May 19, 2018 at 12:41 PM, Juan Francisco Cantero Hurtado < > i...@juanfra.info> wrote: > > > The segfault is in: > > httppeer.py(901): resp.close() > > > > (the line number is not the same because I'm using a different version) > > > > Can you run "make test" within /usr/ports/lang/python/2.7 ? > > > > At the end of the long list of tests, it will run a few tests against > > the SSL library. You should see some segfaults there. > > > > > > > > On Sat, May 19, 2018 at 10:19:17AM -0700, Nick Owens wrote: > > > no, that's working fine. it does not crash and i see the HTML content > > from > > > the webserver. > > > > > > i've discovered python has a tracing module and tried it out, but it's > > not > > > making the fault any clearer. > > > > > > python2.7 -m trace --trace `which hg` clone > > > https://www.mercurial-scm.org/repo/hello > > > > > > here's the last 40 or so lines. > > > > > > --- modulename: socket, funcname: readline > > > socket.py(411): buf = self._rbuf > > > socket.py(412): buf.seek(0, 2) # seek end > > > socket.py(413): if buf.tell() > 0: > > > socket.py(415): buf.seek(0) > > > socket.py(416): bline = buf.readline(size) > > > socket.py(417): if bline.endswith('\n') or len(bline) == > > size: > > > socket.py(418): self._rbuf = StringIO() > > > socket.py(419): self._rbuf.write(buf.read()) > > > socket.py(420): return bline > > > keepalive.py(462): if not line: > > > keepalive.py(466): if line == '\r\n': > > > keepalive.py(467): break > > > keepalive.py(470): self.close() > > > --- modulename: keepalive, funcname: close > > > keepalive.py(386): if self.fp: > > > keepalive.py(387): self.fp.close() > > > --- modulename: socket, funcname: close > > > socket.py(281): try: > > > socket.py(282): if self._sock: > > > socket.py(283): self.flush() > > > --- modulename: socket, funcname: flush > > > socket.py(297): if self._wbuf: > > > socket.py(285): if self._close: > > > socket.py(286): self._sock.close() > > > --- modulename: ssl, funcname: close > > > ssl.py(815): if self._makefile_refs < 1: > > > ssl.py(819): self._makefile_refs -= 1 > > > socket.py(287): self._sock = None > > > keepalive.py(388): self.fp = None > > > --- modulename: socket, funcname: __del__ > > > socket.py(290): try: > > > socket.py(291): self.close() > > > --- modulename: socket, funcname: close > > > socket.py(281): try: > > > socket.py(282): if self._sock: > > > socket.py(285): if self._close: > > > socket.py(286): self._sock.close() > > > socket.py(292): except: > > > socket.py(294): pass > > > keepalive.py(389): if self._handler: > > > keepalive.py(390): self._handler._request_closed(self, > > > self._host, > > > keepalive.py(391): > > > self._connection) > > > --- modulename: keepalive, funcname: _request_closed > > > keepalive.py(199): self._cm.set_ready(connection, 1) > > > --- modulename: keepalive, funcname: set_ready > > > keepalive.py(146): try: > > > keepalive.py(147): self._readymap[connection] = ready > > > keepalive.py(472): return ''.join(parts) > > > keepalive.py(416): self._rbuf = '' > > > keepalive.py(417): return s > > > Segmentation fault (core dumped) > > > > > > > > > > > > On Sat, May 19, 2018 at 7:55 AM, Juan Francisco Cantero Hurtado < > > > i...@juanfra.info> wrote: > > > > > > > Try this: > > > > > > > > python2.7 -c 'import urllib2; web = urllib2.urlopen("https://www. > > > > mercurial-scm.org/repo/hello"); print web.read()' > > > > > > > > Does python crash? > > > > > > > > > > > > On Fri, May 18, 2018 at 02:18:13PM -0700, Nick Owens wrote: > > > > > it looks like that's working. with this test mercurial prints > > (falling > > > > back > > > > > to static-http) whereas in the mercurial 'hello' repo it does not. i > > > > wonder > > > > > if it has something todo with the web
Re: hg clone segmentation fault on octeon
my ERL is very sad and slow with a 500mhz cpu/512M ram and the usb drive is very sad and slow at around 1-2MB/s throughput. i will see about getting ports going on it, but it may take a while, if it even works. On Sat, May 19, 2018 at 12:41 PM, Juan Francisco Cantero Hurtado < i...@juanfra.info> wrote: > The segfault is in: > httppeer.py(901): resp.close() > > (the line number is not the same because I'm using a different version) > > Can you run "make test" within /usr/ports/lang/python/2.7 ? > > At the end of the long list of tests, it will run a few tests against > the SSL library. You should see some segfaults there. > > > > On Sat, May 19, 2018 at 10:19:17AM -0700, Nick Owens wrote: > > no, that's working fine. it does not crash and i see the HTML content > from > > the webserver. > > > > i've discovered python has a tracing module and tried it out, but it's > not > > making the fault any clearer. > > > > python2.7 -m trace --trace `which hg` clone > > https://www.mercurial-scm.org/repo/hello > > > > here's the last 40 or so lines. > > > > --- modulename: socket, funcname: readline > > socket.py(411): buf = self._rbuf > > socket.py(412): buf.seek(0, 2) # seek end > > socket.py(413): if buf.tell() > 0: > > socket.py(415): buf.seek(0) > > socket.py(416): bline = buf.readline(size) > > socket.py(417): if bline.endswith('\n') or len(bline) == > size: > > socket.py(418): self._rbuf = StringIO() > > socket.py(419): self._rbuf.write(buf.read()) > > socket.py(420): return bline > > keepalive.py(462): if not line: > > keepalive.py(466): if line == '\r\n': > > keepalive.py(467): break > > keepalive.py(470): self.close() > > --- modulename: keepalive, funcname: close > > keepalive.py(386): if self.fp: > > keepalive.py(387): self.fp.close() > > --- modulename: socket, funcname: close > > socket.py(281): try: > > socket.py(282): if self._sock: > > socket.py(283): self.flush() > > --- modulename: socket, funcname: flush > > socket.py(297): if self._wbuf: > > socket.py(285): if self._close: > > socket.py(286): self._sock.close() > > --- modulename: ssl, funcname: close > > ssl.py(815): if self._makefile_refs < 1: > > ssl.py(819): self._makefile_refs -= 1 > > socket.py(287): self._sock = None > > keepalive.py(388): self.fp = None > > --- modulename: socket, funcname: __del__ > > socket.py(290): try: > > socket.py(291): self.close() > > --- modulename: socket, funcname: close > > socket.py(281): try: > > socket.py(282): if self._sock: > > socket.py(285): if self._close: > > socket.py(286): self._sock.close() > > socket.py(292): except: > > socket.py(294): pass > > keepalive.py(389): if self._handler: > > keepalive.py(390): self._handler._request_closed(self, > > self._host, > > keepalive.py(391): > > self._connection) > > --- modulename: keepalive, funcname: _request_closed > > keepalive.py(199): self._cm.set_ready(connection, 1) > > --- modulename: keepalive, funcname: set_ready > > keepalive.py(146): try: > > keepalive.py(147): self._readymap[connection] = ready > > keepalive.py(472): return ''.join(parts) > > keepalive.py(416): self._rbuf = '' > > keepalive.py(417): return s > > Segmentation fault (core dumped) > > > > > > > > On Sat, May 19, 2018 at 7:55 AM, Juan Francisco Cantero Hurtado < > > i...@juanfra.info> wrote: > > > > > Try this: > > > > > > python2.7 -c 'import urllib2; web = urllib2.urlopen("https://www. > > > mercurial-scm.org/repo/hello"); print web.read()' > > > > > > Does python crash? > > > > > > > > > On Fri, May 18, 2018 at 02:18:13PM -0700, Nick Owens wrote: > > > > it looks like that's working. with this test mercurial prints > (falling > > > back > > > > to static-http) whereas in the mercurial 'hello' repo it does not. i > > > wonder > > > > if it has something todo with the web server/http protocol. > > > > > > > > erl$ pwd > > > > /home/mischief > > > > erl$ df -h > > > > Filesystem SizeUsed Avail Capacity Mounted on > > > > /dev/sd0a 13.9G923M 12.3G 7%/ > > > > erl$ uname -a > > > > OpenBSD erl.house.lan 6.3 GENERIC#0 octeon > > > > erl$ hg -v clone http://juanfra684.blinkenshell.org/tmp/hello > > > > (falling back to static-http) > > > > destination directory: hello > > > > requesting all changes > > > > 2 changesets found > > > > uncompressed size of bundle content: > > > > 464 (changelog) > > > > 335 (manifests) > > > > 143 Makefile > > > > 388 hello.c > > > > adding changesets > > > > adding manifests > > > > adding file changes > > > > added 2 changesets with
Re: hg clone segmentation fault on octeon
The segfault is in: httppeer.py(901): resp.close() (the line number is not the same because I'm using a different version) Can you run "make test" within /usr/ports/lang/python/2.7 ? At the end of the long list of tests, it will run a few tests against the SSL library. You should see some segfaults there. On Sat, May 19, 2018 at 10:19:17AM -0700, Nick Owens wrote: > no, that's working fine. it does not crash and i see the HTML content from > the webserver. > > i've discovered python has a tracing module and tried it out, but it's not > making the fault any clearer. > > python2.7 -m trace --trace `which hg` clone > https://www.mercurial-scm.org/repo/hello > > here's the last 40 or so lines. > > --- modulename: socket, funcname: readline > socket.py(411): buf = self._rbuf > socket.py(412): buf.seek(0, 2) # seek end > socket.py(413): if buf.tell() > 0: > socket.py(415): buf.seek(0) > socket.py(416): bline = buf.readline(size) > socket.py(417): if bline.endswith('\n') or len(bline) == size: > socket.py(418): self._rbuf = StringIO() > socket.py(419): self._rbuf.write(buf.read()) > socket.py(420): return bline > keepalive.py(462): if not line: > keepalive.py(466): if line == '\r\n': > keepalive.py(467): break > keepalive.py(470): self.close() > --- modulename: keepalive, funcname: close > keepalive.py(386): if self.fp: > keepalive.py(387): self.fp.close() > --- modulename: socket, funcname: close > socket.py(281): try: > socket.py(282): if self._sock: > socket.py(283): self.flush() > --- modulename: socket, funcname: flush > socket.py(297): if self._wbuf: > socket.py(285): if self._close: > socket.py(286): self._sock.close() > --- modulename: ssl, funcname: close > ssl.py(815): if self._makefile_refs < 1: > ssl.py(819): self._makefile_refs -= 1 > socket.py(287): self._sock = None > keepalive.py(388): self.fp = None > --- modulename: socket, funcname: __del__ > socket.py(290): try: > socket.py(291): self.close() > --- modulename: socket, funcname: close > socket.py(281): try: > socket.py(282): if self._sock: > socket.py(285): if self._close: > socket.py(286): self._sock.close() > socket.py(292): except: > socket.py(294): pass > keepalive.py(389): if self._handler: > keepalive.py(390): self._handler._request_closed(self, > self._host, > keepalive.py(391): > self._connection) > --- modulename: keepalive, funcname: _request_closed > keepalive.py(199): self._cm.set_ready(connection, 1) > --- modulename: keepalive, funcname: set_ready > keepalive.py(146): try: > keepalive.py(147): self._readymap[connection] = ready > keepalive.py(472): return ''.join(parts) > keepalive.py(416): self._rbuf = '' > keepalive.py(417): return s > Segmentation fault (core dumped) > > > > On Sat, May 19, 2018 at 7:55 AM, Juan Francisco Cantero Hurtado < > i...@juanfra.info> wrote: > > > Try this: > > > > python2.7 -c 'import urllib2; web = urllib2.urlopen("https://www. > > mercurial-scm.org/repo/hello"); print web.read()' > > > > Does python crash? > > > > > > On Fri, May 18, 2018 at 02:18:13PM -0700, Nick Owens wrote: > > > it looks like that's working. with this test mercurial prints (falling > > back > > > to static-http) whereas in the mercurial 'hello' repo it does not. i > > wonder > > > if it has something todo with the web server/http protocol. > > > > > > erl$ pwd > > > /home/mischief > > > erl$ df -h > > > Filesystem SizeUsed Avail Capacity Mounted on > > > /dev/sd0a 13.9G923M 12.3G 7%/ > > > erl$ uname -a > > > OpenBSD erl.house.lan 6.3 GENERIC#0 octeon > > > erl$ hg -v clone http://juanfra684.blinkenshell.org/tmp/hello > > > (falling back to static-http) > > > destination directory: hello > > > requesting all changes > > > 2 changesets found > > > uncompressed size of bundle content: > > > 464 (changelog) > > > 335 (manifests) > > > 143 Makefile > > > 388 hello.c > > > adding changesets > > > adding manifests > > > adding file changes > > > added 2 changesets with 2 changes to 2 files > > > new changesets 0a04b987be5a:82e55d328c8c > > > updating to branch default > > > resolving manifests > > > getting Makefile > > > getting hello.c > > > 2 files updated, 0 files merged, 0 files removed, 0 files unresolved > > > > > > On Fri, May 18, 2018 at 1:49 PM, Juan Francisco Cantero Hurtado < > > > i...@juanfra.info> wrote: > > > > > > > On Fri, May 18, 2018 at 07:50:03AM -0700, misch...@offblast.org wrote: > > > > > >Synopsis:hg clone segmentation fault on octeon > > > > > >Category:user mips64 >
Re: Panic in IPSEC
On Sat, May 19, 2018 at 02:46:35PM +0200, Alexander Bluhm wrote: > On Sat, May 19, 2018 at 02:30:27PM +0200, Peter J. Philipp wrote: > > I have applied it now, what it was > > missing was a terminating semicolon on KERNEL_LOCK(), so far my C goes I was > > able to correct that. > > Ah, I tested a GENERIC non MP kernel in qemu. There the define is > a noop and the compiler ignored the missing ; . > > > Do you want me to get back to you tonight after 8PM in case this > > box hasn't paniced again? > > To trigger the panic, you must send a lot of traffic. Please report > tonight whether it is stable now. Hi, The box is still up, but I wasn't able to put much traffic on it because I'm recabling my home. I exchanged routers and cables to other areas of the apartment. Let me know if you want me to upload something and I'll gladly do it. Regards, -peter > Here is the fixed diff. > > bluhm > > Index: net/pfkeyv2.c > === > RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v > retrieving revision 1.179 > diff -u -p -r1.179 pfkeyv2.c > --- net/pfkeyv2.c 16 May 2018 13:19:00 - 1.179 > +++ net/pfkeyv2.c 19 May 2018 12:37:11 - > @@ -381,12 +381,15 @@ pfkey_sendup(struct keycb *kp, struct mb > } else > m = m0; > > + KERNEL_LOCK(); > if (!sbappendaddr(so, >so_rcv, _addr, m, NULL)) { > m_freem(m); > + KERNEL_UNLOCK(); > return (ENOBUFS); > } > > sorwakeup(so); > + KERNEL_UNLOCK(); > return (0); > } >
Re: ddb(4): p[rint] man page example vs. result.
On Wed, May 16, 2018 at 12:41:01PM +0300, Artturi Alm wrote: > On Wed, May 09, 2018 at 11:35:42AM +0200, Martin Pieuchot wrote: > > On 09/05/18(Wed) 12:13, Artturi Alm wrote: > > > On Wed, May 09, 2018 at 10:23:41AM +0200, Martin Pieuchot wrote: > > > > On 09/05/18(Wed) 07:48, Artturi Alm wrote: > > > > > On Tue, May 08, 2018 at 01:44:39AM +0300, Artturi Alm wrote: > > > > > > > > > > > > No bug are irrelevant to fix. But working with you is hard, really > > > > hard. You never explain what the problem is. Reading your email is > > > > an exercise in frustration because you can do some good work but you > > > > fail to communicate. > > > > > > > > > > (manual "copypaste"): > > > > > > nc2k4hp# sysctl ddb.trigger=1 > > > > > > Stopped at db_enter+0x4: popl%ebp > > > > > > ddb{0}> print/x "eax = " $eax "\necx = " $ecx "\n" > > > > > > 3 > > > > > > ddb{0}> c > > > > > > ddb.trigger: 0 -> 1 > > > > > > > > > > > > so, for reasons yet unknown to me, p[rint] doesn't seem to work at > > > > > > all > > > > > > like described in the man page, tested on i386. > > > > > > > > What do no work? What does the man page describe? Do you expect us to > > > > read the man page, then look at your mail again, then try to understand > > > > what is not working? > > > > > > > > > > For example, > > > > > > print/x "eax = " $eax "\necx = " $ecx "\n" > > > > > > will print something like this: > > > > > > eax = xx > > > ecx = yy > > > > > > Now I did install 5.0 into a VM, and there the result for above example > > > would of have been just "Ambiguous", and I'm guessing now that this > > > has not been working as in the example since import. > > > My fix is limited to producing output just like in the example, but > > > input requires more, as it needs escapes for everything not a-z,A-Z,0-9. > > > > > > > > > Should it work? I hope it would. > > > > > > > > What should work? Why do you hope? Maybe the manpage should be fixed? > > > > > > > > > > Multiple [addr] arguments to p[rint], including support for strings, > > > and i hope so because i would find it useful while testing/writing/porting > > > drivers. Maybe, I do like "show struct", and have more than just > > > the filtering diff for it, but it doesn't really work for the ad hoc > > > usecases p[rint] seems so excellent for. > > > > > > > > Does feel like waste of time to go any further fixing this, if this is > > > > > yet another bug too irrelevant for anyone to ack for, so _any_ input > > > > > here would be great. > > > > > > > > Like I said, no bug are irrelevant but if the one finding the bug, you > > > > in that case, is not willing to properly explain the problem, then > > > > better not send an email at all ;) > > > > > > Will try in the future. > > > > Thanks for the explanation! > > > > > haven't tested the diff below yet, but compared to previous, it should > > > have working /modifierS. > > > > IMHO we should just amend the man page and keep ddb(4) code simple. > > Np., initial diff to castrate it to reality below, and jmc@ CC'd. > > Unsure about the wording of the "If no modifier is ..." sentence towards > end, atleast "the last one specified" when there can be only one specified > does sound weird to me, maybe replacing 'previous' with 'last'? > > Anyway I'm done with this, due broken english and all:) > > -Artturi > > > diff --git share/man/man4/ddb.4 share/man/man4/ddb.4 > index 02ff2fd78a6..69402f0c776 100644 > --- share/man/man4/ddb.4 > +++ share/man/man4/ddb.4 > @@ -278,9 +278,9 @@ plus the size of the data examined. > .It Xo > .Ic p Ns Op Ic rint > .Op Cm /axzodurc > -.Op Ar addr Op Ar addr ... > +.Op Ar addr > .Xc > -Print each > +Print > .Ar addr > according to the modifier character. > The valid modifiers are a subset of those from the > @@ -290,20 +290,15 @@ If no modifier is specified, the last one specified in a > previous use of > .Ic print > is used. > -The > -.Ar addr > -argument > -can be a string, and it is printed as a literal. > .Pp > For example, > .Bd -literal -offset indent > -print/x "eax = " $eax "\enecx = " $ecx "\en" > +print/x $eax > .Ed > .Pp > will print something like this: > .Bd -literal -offset indent > -eax = xx > -ecx = yy > +xx > .Ed > .\" > .It Xo fixed, thanks. jmc
Re: hg clone segmentation fault on octeon
no, that's working fine. it does not crash and i see the HTML content from the webserver. i've discovered python has a tracing module and tried it out, but it's not making the fault any clearer. python2.7 -m trace --trace `which hg` clone https://www.mercurial-scm.org/repo/hello here's the last 40 or so lines. --- modulename: socket, funcname: readline socket.py(411): buf = self._rbuf socket.py(412): buf.seek(0, 2) # seek end socket.py(413): if buf.tell() > 0: socket.py(415): buf.seek(0) socket.py(416): bline = buf.readline(size) socket.py(417): if bline.endswith('\n') or len(bline) == size: socket.py(418): self._rbuf = StringIO() socket.py(419): self._rbuf.write(buf.read()) socket.py(420): return bline keepalive.py(462): if not line: keepalive.py(466): if line == '\r\n': keepalive.py(467): break keepalive.py(470): self.close() --- modulename: keepalive, funcname: close keepalive.py(386): if self.fp: keepalive.py(387): self.fp.close() --- modulename: socket, funcname: close socket.py(281): try: socket.py(282): if self._sock: socket.py(283): self.flush() --- modulename: socket, funcname: flush socket.py(297): if self._wbuf: socket.py(285): if self._close: socket.py(286): self._sock.close() --- modulename: ssl, funcname: close ssl.py(815): if self._makefile_refs < 1: ssl.py(819): self._makefile_refs -= 1 socket.py(287): self._sock = None keepalive.py(388): self.fp = None --- modulename: socket, funcname: __del__ socket.py(290): try: socket.py(291): self.close() --- modulename: socket, funcname: close socket.py(281): try: socket.py(282): if self._sock: socket.py(285): if self._close: socket.py(286): self._sock.close() socket.py(292): except: socket.py(294): pass keepalive.py(389): if self._handler: keepalive.py(390): self._handler._request_closed(self, self._host, keepalive.py(391): self._connection) --- modulename: keepalive, funcname: _request_closed keepalive.py(199): self._cm.set_ready(connection, 1) --- modulename: keepalive, funcname: set_ready keepalive.py(146): try: keepalive.py(147): self._readymap[connection] = ready keepalive.py(472): return ''.join(parts) keepalive.py(416): self._rbuf = '' keepalive.py(417): return s Segmentation fault (core dumped) On Sat, May 19, 2018 at 7:55 AM, Juan Francisco Cantero Hurtado < i...@juanfra.info> wrote: > Try this: > > python2.7 -c 'import urllib2; web = urllib2.urlopen("https://www. > mercurial-scm.org/repo/hello"); print web.read()' > > Does python crash? > > > On Fri, May 18, 2018 at 02:18:13PM -0700, Nick Owens wrote: > > it looks like that's working. with this test mercurial prints (falling > back > > to static-http) whereas in the mercurial 'hello' repo it does not. i > wonder > > if it has something todo with the web server/http protocol. > > > > erl$ pwd > > /home/mischief > > erl$ df -h > > Filesystem SizeUsed Avail Capacity Mounted on > > /dev/sd0a 13.9G923M 12.3G 7%/ > > erl$ uname -a > > OpenBSD erl.house.lan 6.3 GENERIC#0 octeon > > erl$ hg -v clone http://juanfra684.blinkenshell.org/tmp/hello > > (falling back to static-http) > > destination directory: hello > > requesting all changes > > 2 changesets found > > uncompressed size of bundle content: > > 464 (changelog) > > 335 (manifests) > > 143 Makefile > > 388 hello.c > > adding changesets > > adding manifests > > adding file changes > > added 2 changesets with 2 changes to 2 files > > new changesets 0a04b987be5a:82e55d328c8c > > updating to branch default > > resolving manifests > > getting Makefile > > getting hello.c > > 2 files updated, 0 files merged, 0 files removed, 0 files unresolved > > > > On Fri, May 18, 2018 at 1:49 PM, Juan Francisco Cantero Hurtado < > > i...@juanfra.info> wrote: > > > > > On Fri, May 18, 2018 at 07:50:03AM -0700, misch...@offblast.org wrote: > > > > >Synopsis:hg clone segmentation fault on octeon > > > > >Category:user mips64 > > > > >Environment: > > > > System : OpenBSD 6.3 > > > > Details : OpenBSD 6.3 (GENERIC) #0: Sun Mar 25 19:48:22 UTC > > > 2018 > > > >visa@octeon:/usr/src/sys/arch/ > > > octeon/compile/GENERIC > > > > > > > > Architecture: OpenBSD.octeon > > > > Machine : octeon > > > > >Description: > > > > mercurial core dumps when executing clone > > > > >How-To-Repeat: > > > > install openbsd/octeon on edgerouter lite > > > > single / partition with wxallowed > > > > erl# pkg_add mercurial > > > > erl$ hg clone
Re: hg clone segmentation fault on octeon
Try this: python2.7 -c 'import urllib2; web = urllib2.urlopen("https://www.mercurial-scm.org/repo/hello;); print web.read()' Does python crash? On Fri, May 18, 2018 at 02:18:13PM -0700, Nick Owens wrote: > it looks like that's working. with this test mercurial prints (falling back > to static-http) whereas in the mercurial 'hello' repo it does not. i wonder > if it has something todo with the web server/http protocol. > > erl$ pwd > /home/mischief > erl$ df -h > Filesystem SizeUsed Avail Capacity Mounted on > /dev/sd0a 13.9G923M 12.3G 7%/ > erl$ uname -a > OpenBSD erl.house.lan 6.3 GENERIC#0 octeon > erl$ hg -v clone http://juanfra684.blinkenshell.org/tmp/hello > (falling back to static-http) > destination directory: hello > requesting all changes > 2 changesets found > uncompressed size of bundle content: > 464 (changelog) > 335 (manifests) > 143 Makefile > 388 hello.c > adding changesets > adding manifests > adding file changes > added 2 changesets with 2 changes to 2 files > new changesets 0a04b987be5a:82e55d328c8c > updating to branch default > resolving manifests > getting Makefile > getting hello.c > 2 files updated, 0 files merged, 0 files removed, 0 files unresolved > > On Fri, May 18, 2018 at 1:49 PM, Juan Francisco Cantero Hurtado < > i...@juanfra.info> wrote: > > > On Fri, May 18, 2018 at 07:50:03AM -0700, misch...@offblast.org wrote: > > > >Synopsis:hg clone segmentation fault on octeon > > > >Category:user mips64 > > > >Environment: > > > System : OpenBSD 6.3 > > > Details : OpenBSD 6.3 (GENERIC) #0: Sun Mar 25 19:48:22 UTC > > 2018 > > >visa@octeon:/usr/src/sys/arch/ > > octeon/compile/GENERIC > > > > > > Architecture: OpenBSD.octeon > > > Machine : octeon > > > >Description: > > > mercurial core dumps when executing clone > > > >How-To-Repeat: > > > install openbsd/octeon on edgerouter lite > > > single / partition with wxallowed > > > erl# pkg_add mercurial > > > erl$ hg clone https://www.mercurial-scm.org/repo/hello > > > destination directory: hello > > > requesting all changes > > > Segmentation fault (core dumped) > > > > > > >Fix: > > > no clue how to fix it. gdb output: > > > > Hi, I don't have an Octeon system to test mercurial but it's working > > fine on mips64el. Can you test this command? > > > > hg -v clone http://juanfra684.blinkenshell.org/tmp/hello > > > > > > > > -- > > Juan Francisco Cantero Hurtado http://juanfra.info > > -- Juan Francisco Cantero Hurtado http://juanfra.info
ugold(4) fyi
Hi, I ran into a thread[0] that somehow did seem to suggest some variants of uthum(4) might be affected by this also, but i don't use/have these devices, so i didn't look deeper, just saw on misc@ that these still have users.. URL[1] to the issue on github containing what i think is the fix you'd need if you care, was referenced on tech@[2], before the fix was there, unless i looked at the dates wrong, so i was thinking someone should revisit there. Reading [1] should be enough for users/devs familiar with the issue. -Artturi [0] https://marc.info/?l=openbsd-misc=136844728930246=2 [1] https://github.com/edorfaus/TEMPered/issues/39 [2] https://marc.info/?l=openbsd-tech=150715036829680=2
Re: Panic in IPSEC
On May 19, 2018 2:52 PM, Alexander Bluhmwrote: > This is unrelated, the expire bug was introduced just a few days ago. sorry for the noise...
Re: Panic in IPSEC
On Sat, May 19, 2018 at 08:45:01AM -0400, mabi wrote: > If that might help you guys, this seems quite similar to the issue I have > encountered and reported on this mailing list back in April: > https://marc.info/?l=openbsd-bugs=152417193124446=2 This is unrelated, the expire bug was introduced just a few days ago. https://marc.info/?l=openbsd-cvs=152628324915667=2 bluhm
Re: Panic in IPSEC
On Sat, May 19, 2018 at 02:30:27PM +0200, Peter J. Philipp wrote: > I have applied it now, what it was > missing was a terminating semicolon on KERNEL_LOCK(), so far my C goes I was > able to correct that. Ah, I tested a GENERIC non MP kernel in qemu. There the define is a noop and the compiler ignored the missing ; . > Do you want me to get back to you tonight after 8PM in case this > box hasn't paniced again? To trigger the panic, you must send a lot of traffic. Please report tonight whether it is stable now. Here is the fixed diff. bluhm Index: net/pfkeyv2.c === RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v retrieving revision 1.179 diff -u -p -r1.179 pfkeyv2.c --- net/pfkeyv2.c 16 May 2018 13:19:00 - 1.179 +++ net/pfkeyv2.c 19 May 2018 12:37:11 - @@ -381,12 +381,15 @@ pfkey_sendup(struct keycb *kp, struct mb } else m = m0; + KERNEL_LOCK(); if (!sbappendaddr(so, >so_rcv, _addr, m, NULL)) { m_freem(m); + KERNEL_UNLOCK(); return (ENOBUFS); } sorwakeup(so); + KERNEL_UNLOCK(); return (0); }
Re: Panic in IPSEC
On May 19, 2018 2:36 PM, Alexander Bluhmwrote: > After a certain amount of traffic, the key is expired. The kernel > > wants to send a message to iked, but it has not acquired the porpper > > lock. > > Default in iked is > > #define IKED_LIFETIME_BYTES 536870912 /* 512 Mb */ > > I think you can change it in iked.conf > > lifetime time [bytes bytes] > > bluhm If that might help you guys, this seems quite similar to the issue I have encountered and reported on this mailing list back in April: https://marc.info/?l=openbsd-bugs=152417193124446=2
Re: Panic in IPSEC
On Sat, May 19, 2018 at 02:08:55PM +0200, Peter J. Philipp wrote: > > panic: kernel diagnostic assertion "_kernel_lock_held()" failed in file "/us It is /usr/src/sys/kern/uipc_socket2.c, line 314 302 void 303 soassertlocked(struct socket *so) 304 { 305 switch (so->so_proto->pr_domain->dom_family) { 306 case PF_INET: 307 case PF_INET6: 308 NET_ASSERT_LOCKED(); 309 break; 310 case PF_UNIX: 311 case PF_ROUTE: 312 case PF_KEY: 313 default: * 314 KERNEL_ASSERT_LOCKED(); 315 break; 316 } 317 } > It just panic'ed again 5 min ago. It is not a matter of time, but of transfered bytes. It is triggered in /usr/src/sys/netinet/ip_esp.c, line 436 433 /* Notify on soft expiration */ 434 if ((tdb->tdb_flags & TDBF_SOFT_BYTES) && 435 (tdb->tdb_cur_bytes >= tdb->tdb_soft_bytes)) { * 436 pfkeyv2_expire(tdb, SADB_EXT_LIFETIME_SOFT); 437 tdb->tdb_flags &= ~TDBF_SOFT_BYTES; /* Turn off checking */ 438 } After a certain amount of traffic, the key is expired. The kernel wants to send a message to iked, but it has not acquired the porpper lock. Default in iked is #define IKED_LIFETIME_BYTES 536870912 /* 512 Mb */ I think you can change it in iked.conf lifetime time [bytes bytes] bluhm
Re: Panic in IPSEC
On Sat, May 19, 2018 at 02:02:35PM +0200, Alexander Bluhm wrote: > On Sat, May 19, 2018 at 12:57:19PM +0200, Peter J. Philipp wrote: > > panic: kernel diagnostic assertion...(cut) > > This is an important line. > panic: kernel diagnostic assertion "_kernel_lock_held()" failed in file "/us > Then the photo is cut, but I can guess what is next. > > > soassertlocked(815c8c03) at soassertlocked+0x73 > > sorwakeup(800032d930c8) at sorwakeup+0xf > > pfkeyv2_sendmessage(b0, > > 80137c00,4,8124d700,800032d93128,2aa6da05f83cead1) at > > pfkeyv2_sendmessage+0x20b > > I would say as long we have no per socket locking, we must grab > either net lock or kernel lock when accessing the socket. For pf > key sockets it is kernel lock, so just add it there. > > bluhm Hi Alexander, Let me say thanks again for the patch. I have applied it now, what it was missing was a terminating semicolon on KERNEL_LOCK(), so far my C goes I was able to correct that. We'll see fairly soon if this is the right fix I gather. Given the second photo one can probably make out more, if this patch is indeed at the right spot. If this box doesn't panic anymore we'll know it'll have nailed it. Do you want me to get back to you tonight after 8PM in case this box hasn't paniced again? Best Regards, -peter > > Index: net/pfkeyv2.c > === > RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v > retrieving revision 1.179 > diff -u -p -r1.179 pfkeyv2.c > --- net/pfkeyv2.c 16 May 2018 13:19:00 - 1.179 > +++ net/pfkeyv2.c 19 May 2018 11:50:53 - > @@ -381,12 +381,15 @@ pfkey_sendup(struct keycb *kp, struct mb > } else > m = m0; > > + KERNEL_LOCK() > if (!sbappendaddr(so, >so_rcv, _addr, m, NULL)) { > m_freem(m); > + KERNEL_UNLOCK(); > return (ENOBUFS); > } > > sorwakeup(so); > + KERNEL_UNLOCK(); > return (0); > } >
Re: Panic in IPSEC
On Sat, May 19, 2018 at 02:02:35PM +0200, Alexander Bluhm wrote: > On Sat, May 19, 2018 at 12:57:19PM +0200, Peter J. Philipp wrote: > > panic: kernel diagnostic assertion...(cut) > > This is an important line. > panic: kernel diagnostic assertion "_kernel_lock_held()" failed in file "/us > Then the photo is cut, but I can guess what is next. It just panic'ed again 5 min ago. I took another photo this time made sure that the full screen is in the visor. I can send it hold on, let me extract it from my phone... done: http://centroid.eu/private/p5190002.jpg hopefully it doesn't panic again while I write this. I'm going to attempt testing your patch, given it doesn't panic. Thanks! -peter > > soassertlocked(815c8c03) at soassertlocked+0x73 > > sorwakeup(800032d930c8) at sorwakeup+0xf > > pfkeyv2_sendmessage(b0, > > 80137c00,4,8124d700,800032d93128,2aa6da05f83cead1) at > > pfkeyv2_sendmessage+0x20b > > I would say as long we have no per socket locking, we must grab > either net lock or kernel lock when accessing the socket. For pf > key sockets it is kernel lock, so just add it there. > > bluhm > > Index: net/pfkeyv2.c > === > RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v > retrieving revision 1.179 > diff -u -p -r1.179 pfkeyv2.c > --- net/pfkeyv2.c 16 May 2018 13:19:00 - 1.179 > +++ net/pfkeyv2.c 19 May 2018 11:50:53 - > @@ -381,12 +381,15 @@ pfkey_sendup(struct keycb *kp, struct mb > } else > m = m0; > > + KERNEL_LOCK() > if (!sbappendaddr(so, >so_rcv, _addr, m, NULL)) { > m_freem(m); > + KERNEL_UNLOCK(); > return (ENOBUFS); > } > > sorwakeup(so); > + KERNEL_UNLOCK(); > return (0); > } >
Re: Panic in IPSEC
On Sat, May 19, 2018 at 12:57:19PM +0200, Peter J. Philipp wrote: > panic: kernel diagnostic assertion...(cut) This is an important line. panic: kernel diagnostic assertion "_kernel_lock_held()" failed in file "/us Then the photo is cut, but I can guess what is next. > soassertlocked(815c8c03) at soassertlocked+0x73 > sorwakeup(800032d930c8) at sorwakeup+0xf > pfkeyv2_sendmessage(b0, > 80137c00,4,8124d700,800032d93128,2aa6da05f83cead1) at > pfkeyv2_sendmessage+0x20b I would say as long we have no per socket locking, we must grab either net lock or kernel lock when accessing the socket. For pf key sockets it is kernel lock, so just add it there. bluhm Index: net/pfkeyv2.c === RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v retrieving revision 1.179 diff -u -p -r1.179 pfkeyv2.c --- net/pfkeyv2.c 16 May 2018 13:19:00 - 1.179 +++ net/pfkeyv2.c 19 May 2018 11:50:53 - @@ -381,12 +381,15 @@ pfkey_sendup(struct keycb *kp, struct mb } else m = m0; + KERNEL_LOCK() if (!sbappendaddr(so, >so_rcv, _addr, m, NULL)) { m_freem(m); + KERNEL_UNLOCK(); return (ENOBUFS); } sorwakeup(so); + KERNEL_UNLOCK(); return (0); }
Panic in IPSEC
>Synopsis: unexpected panic in IPSEC on -current snapshot from today >Category: kernel >Environment: System : OpenBSD 6.3 Details : OpenBSD 6.3-current (GENERIC.MP) #40: Fri May 18 09:57:33 MDT 2018 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP Architecture: OpenBSD.amd64 Machine : amd64 >Description: I don't know what happened my box paniced. I took a photo of the monitor and tried getting it rebooted with "boot reboot" but it hung. So I am basing this off the photo. panic: kernel diagnostic assertion...(cut) WARNING: SPL NOT LOWERED ON SYSCALL 0 4 EXIT 37a...(cut) WARNING: SPL NOT LOWERED ON SYSCALL 0 4 EXIT 37a7ba...(cut) TID PID UID PRFLAGS PFLAGS CPU COMMAND ... 3 firefox ... 4 pflogd ... 1 crypto *243695 44474 0 0x14000 0x200 2 softnet db_enter() at db_enter+0x5 panic() at panic+0x120 __assert(ff81909c94, 800032d93050,f00cbebc100,fff0724a7a638) at __assert+0x24 soassertlocked(815c8c03) at soassertlocked+0x73 sorwakeup(800032d930c8) at sorwakeup+0xf pfkeyv2_sendmessage(b0, 80137c00,4,8124d700,800032d93128,2aa6da05f83cead1) at pfkeyv2_sendmessage+0x20b pfkeyv2_expire(80137c00,10) at pfkeyv2_expire+0x1eb esp_input(80137c00,ff00aefafb00,28,32) at esp_input+0x2ad ipsec_common_input(18,800032d93440,6,800032d9343c,32,2aa6da05f83cead1) at ipsec_common_input+0x6a4 esp6_input(18,fff81b0d0c0,18,32) at esp6_input+0x15a ip_deliver(800032d9344c,800032d9343c,80027040,800032d93440) at ip_deliver+0x203 ip6intr() at ip6intr+0x7b if_netisr(fff8138e830) at if_netisr+0x6c taskq_thread(0) at taskq_thread+0x6d end trace frame: 0x0, count: 1 https://www.openbsd.org/ddb.html describes the unreachable info required in bug reports. Insufficient ifo makes it difficult to find and fix bugs. ddb{2}> I'm putting the photo at http://centroid.eu/private/p5190001.jpg in a second it could take a minute to propagate. Thanks! >How-To-Repeat: Unknown. My setup is weird as it uses IPSEC over freifunk. >Fix: Unknown. dmesg: OpenBSD 6.3-current (GENERIC.MP) #40: Fri May 18 09:57:33 MDT 2018 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP real mem = 34208063488 (32623MB) avail mem = 33163272192 (31626MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xec1f0 (91 entries) bios0: vendor American Megatrends Inc. version "2004" date 06/05/2014 bios0: ASUS All Series acpi0 at bios0: rev 2 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP APIC FPDT LPIT SSDT SSDT MCFG HPET SSDT SSDT BGRT DMAR acpi0: wakeup devices PXSX(S4) RP01(S4) PXSX(S4) PXSX(S4) RP03(S4) PXSX(S4) PXSX(S4) PXSX(S4) RP06(S4) PXSX(S4) PXSX(S4) RP08(S4) UAR1(S4) PS2K(S4) GLAN(S4) EHC1(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimadt0 at acpi0 addr 0xfee0: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz, 3498.41 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,IBRS,IBPB,STIBP,SENSOR,ARAT,MELTDOWN cpu0: 256KB 64b/line 8-way L2 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges cpu0: apic clock running at 99MHz cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4, IBE cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz, 3497.98 MHz cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,IBRS,IBPB,STIBP,SENSOR,ARAT,MELTDOWN cpu1: 256KB 64b/line 8-way L2 cache cpu1: smt 0, core 1, package 0 cpu2 at mainbus0: apid 4 (application processor) cpu2: Intel(R) Xeon(R) CPU E3-1275 v3 @ 3.50GHz, 3497.98 MHz cpu2:
arm64: clock_gettime(CLOCK_MONOTONIC) not monotonic
Hi, Working on lang/rust on arm64, I experiment rustc panic due to not monotonic timestamp. I tried to reproduce the problem in plain C. My test program is just a loop of calling clock_gettime(CLOCK_MONOTONIC), and it checks if the result is monotonic (by comparing with previous value). On amd64, it seems to work well, but on arm64 it fails quickly. $ cat monotonic.c #include #include #include void ts_abort(struct timespec *ts0, struct timespec *ts1) { printf("ts0=(%llu,%lu)\nts1=(%llu,%lu)\n", ts0->tv_sec, ts0->tv_nsec, ts1->tv_sec, ts1->tv_nsec); abort(); } int main(int argc, char *argv[]) { struct timespec ts0, ts1; clock_gettime(CLOCK_MONOTONIC, ); for(;;) { clock_gettime(CLOCK_MONOTONIC, ); if ((ts0.tv_sec < ts1.tv_sec) || ((ts0.tv_sec == ts1.tv_sec) && (ts0.tv_nsec < ts1.tv_nsec))) { ts0.tv_sec = ts1.tv_sec; ts0.tv_nsec = ts1.tv_nsec; } else ts_abort(, ); } } $ cc -g -Wall monotonic.c $ time ./a.out ts0=(485220,477812476) ts1=(485220,477728098) Abort trap (core dumped) ts0 should be <= ts1 if the result was monotonic. dmesg below. Thanks. -- Sebastien Marie OpenBSD 6.3-current (GENERIC) #281: Sat May 12 13:30:59 MDT 2018 dera...@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC real mem = 2021466112 (1927MB) avail mem = 1927958528 (1838MB) mainbus0 at root: Pine64+ cpu0 at mainbus0 mpidr 0: ARM Cortex-A53 r0p4 efi0 at mainbus0: UEFI 2.7 efi0: Das U-Boot rev 0x0 psci0 at mainbus0: PSCI 0.2 agtimer0 at mainbus0: tick rate 24000 KHz simplebus0 at mainbus0: "soc" sxiccmu0 at simplebus0 sxipio0 at simplebus0: 103 pins ampintc0 at simplebus0 nirq 224, ncpu 4: "interrupt-controller" sxiccmu1 at simplebus0 sxipio1 at simplebus0: 13 pins sximmc0 at simplebus0 sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma ehci0 at simplebus0 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1 com0 at simplebus0: ns16550, no working fifo com0: console sxitwi0 at simplebus0 iic0 at sxitwi0 sxirtc0 at simplebus0 dwxe0 at simplebus0: address 02:ba:b0:1b:de:88 rgephy0 at dwxe0 phy 0: RTL8169S/8110S/8211 PHY, rev. 5 rgephy1 at dwxe0 phy 1: RTL8169S/8110S/8211 PHY, rev. 5 gpio0 at sxipio0: 32 pins gpio1 at sxipio0: 32 pins gpio2 at sxipio0: 32 pins gpio3 at sxipio0: 32 pins gpio4 at sxipio0: 32 pins gpio5 at sxipio0: 32 pins gpio6 at sxipio0: 32 pins gpio7 at sxipio0: 32 pins gpio8 at sxipio1: 32 pins scsibus0 at sdmmc0: 2 targets, initiator 0 sd0 at scsibus0 targ 1 lun 0: SCSI2 0/direct removable sd0: 15080MB, 512 bytes/sector, 30883840 sectors vscsi0 at root scsibus1 at vscsi0: 256 targets softraid0 at root scsibus2 at softraid0: 256 targets bootfile: sd0a:/bsd boot device: sd0 root on sd0a (058b644e509a3f31.a) swap on sd0b dump on sd0b