From owner-freebsd-arm@freebsd.org Sun Aug 30 22:21:51 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2080D9C67DC for ; Sun, 30 Aug 2015 22:21:51 +0000 (UTC) (envelope-from prvs=67726ce1b=julien.grall@citrix.com) Received: from SMTP02.CITRIX.COM (smtp02.citrix.com [66.165.176.63]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "mail.citrix.com", Issuer "Verizon Public SureServer CA G14-SHA2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 86B28F7C; Sun, 30 Aug 2015 22:21:50 +0000 (UTC) (envelope-from prvs=67726ce1b=julien.grall@citrix.com) X-IronPort-AV: E=Sophos;i="5.17,436,1437436800"; d="scan'208";a="299385018" Subject: Re: arm64: userspace broken with jemalloc 4.0.0 To: Jason Evans References: <55E22CC0.9000306@citrix.com> <52BA8254-5B14-45BC-A434-3DE3E2A9F37B@canonware.com> <55E2FC47.5070801@citrix.com> CC: freebsd-arm , , From: Julien Grall Message-ID: <55E381F5.1030107@citrix.com> Date: Sun, 30 Aug 2015 23:21:41 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <55E2FC47.5070801@citrix.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-DLP: MIA1 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Aug 2015 22:21:51 -0000 On 30/08/2015 13:51, Julien Grall wrote: > Hi Jason, > > On 30/08/2015 07:14, Jason Evans wrote: >> On Aug 29, 2015, at 3:05 PM, Julien Grall >> wrote: >>> I've built the latest freebsd master (r287263) for arm64 today. While >>> trying to use the userspace I hit some ASSERT in jemalloc: >>> >>> # ls >>> : >>> /usr/src/freebsd/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/arena.h:571: >>> Failed assertion: "pageind >= map_bias" >>> pid 21 (ls), uid 0: exited on signal 6 >>> Abort trap >>> >>> It's happening every time with the command "ls". >>> >>> I tried to use the previous version of jemalloc (i.e reverting >>> all the patches up to "Update jemalloc to version 4.0.0" included) >>> and everything is working. >>> >>> Note that I'm using Freebsd as a Xen ARM guest although the only >>> difference is the version of jemalloc (4.0.0 vs 3.6.0). >>> >>> Does anyone using arm64 have seen a similar ASSERT? >>> >>> BTW, is there any way to rebuild only the libc rather than doing >>> make buildworld everytime I modified the jemalloc code? >> >> What is the page size on arm64? > > The page size is 4KB. I could give a try just in case when you have > integrated the patch. So I figured out the problem today. ls is linked to 2 libraries using local thread storage: libxo and libc. Somehow the 2 libraries are using the same base pointer for the storage. When libxo will try to realloc a pointer living in the thread storage, jemalloc will throw an exception (the ASSERT mentioned earlier) because the pointer is invalid. The pointer was expected to be NULL but it has been overwritten by jemalloc earlier. So I don't think this is because of jemalloc and going back to an older version appears to hide the problem. I still need to figure out why jemalloc and libxo are sharing the same base pointer for the thread local storage. I'm not sure where I should look. Regards, -- Julien Grall