Re: latest openjdk7 triggers kernel panic

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Thu, 26 Dec 2013 22:01:44 +0200
On Thu, Dec 26, 2013 at 07:51:45PM +0100, Antoine Brodin wrote:
> On Thu, Dec 26, 2013 at 7:33 PM, Peter Wemm <peter_at_wemm.org> wrote:
> > On Thu, Dec 26, 2013 at 7:39 AM, Antoine Brodin <antoine_at_freebsd.org> wrote:
> >> On Thu, Dec 26, 2013 at 1:04 PM, Andriy Gapon <avg_at_freebsd.org> wrote:
> > ...
> >> Hello,
> >>
> >> FWIW,  I had a similar panic today on 9.2-RELEASE with a GENERIC kernel:
> >> panic: Bad entry start/end for new stack entry
> >> cpuid = 1
> >> KDB: stack backtrace:
> >> #0 0xffffffff80947986 at kdb_backtrace+0x66
> >> #1 0xffffffff8090d9ae at panic+0x1ce
> >> #2 0xffffffff80b81314 at vm_map_stack+0x274
> >> #3 0xffffffff80b83584 at vm_mmap+0x674
> >> #4 0xffffffff80b83d2f at sys_mmap+0x1cf
> >> #5 0xffffffff80cf187a at amd64_syscall+0x5ea
> >> #6 0xffffffff80cdbff7 at Xfast_syscall+0xf7
> >>
> >> It looks like the box was compiling java related ports (java/jaxen and
> >> devel/antlr) when it panic'ed.
> >
> > This is troubling.  I'm wondering what's changed and why we haven't
> > seen this before.
Well, if MAP_STACK was started used only with update, or the condition
for coalescing only holds due to changes in the update, this is not
much strange.

> >
> > Just so I'm clear, you're building 9.2 ports on a 9.2-REL kernel,
> > right?  and not something like building 9.2-REL ports inside a jail on
> > a 10.x or 11.x host?  10.x / 11.x are not involved and you're seeing
> > this?
> 
> 
> This is 9.2-REL host and kernel.
> The only thing "new" is the ports tree,  ports tree from 20 december
> didn't make the box panic while ports tree from 26 december does.
> (and there was an openjdk update between)

I can only repost the following patch.  It should be applicable to 9
as well.

diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index e3842a3..e15e0ca 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
_at__at_ -1207,6 +1207,7 _at__at_ charged:
 	}
 	else if ((prev_entry != &map->header) &&
 		 (prev_entry->eflags == protoeflags) &&
+		 (cow & (MAP_ENTRY_GROWS_DOWN | MAP_ENTRY_GROWS_UP)) == 0 &&
 		 (prev_entry->end == start) &&
 		 (prev_entry->wired_count == 0) &&
 		 (prev_entry->cred == cred ||
_at__at_ -3339,7 +3340,6 _at__at_ vm_map_stack(vm_map_t map, vm_offset_t addrbos, vm_size_t max_ssize,
 	 * NOTE: We explicitly allow bi-directional stacks.
 	 */
 	orient = cow & (MAP_STACK_GROWS_DOWN|MAP_STACK_GROWS_UP);
-	cow &= ~orient;
 	KASSERT(orient != 0, ("No stack grow direction"));
 
 	if (addrbos < vm_map_min(map) ||

Received on Thu Dec 26 2013 - 19:01:54 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:45 UTC