-
Notifications
You must be signed in to change notification settings - Fork 17.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
runtime: address space conflict on Linux/Arm64 #11886
Comments
also, the same "address space conflict" can be seen when compiling go1.5beta2 from gcc-5.1.1 (which has gccgo supporting go1.4.2) natively on arm64. |
Looks like a page size problem. The current runtime assumes a 8192 byte page size. Your arm64 system seems to be using a 65,536 byte page size. Does that sound right? |
That's correct, yes.
|
Please try this patch:
|
That patch works for me. Thanks! |
Ubuntu kernels still stick with 4k pages, but it looks like we're in the minority. I'd be happy to set the page size to 64k on arm64 for linux, which is what we have done for ppc64 I believe.
|
CL https://golang.org/cl/12747 mentions this issue. |
Does this mean we now won't release memory to the system on arm64 because of the work-around we have in place in scavengelist for #9993? |
Hello,@rsc,my arm64 kernel is also use 64k PAGESIZE , how to dynamic check the PAGESIZE and set it ?? |
% getconf PAGESIZE To the best of my knowledge you cannot change the page size the kernel On Wed, Jul 29, 2015 at 4:57 PM, jefby notifications@github.com wrote:
|
@davecheney I'm sorry ,my means is that dynamic check the system PAGESIZE in code src/runtime/arch1_arm64.go , and set its value correctly not force it to some value. |
My understanding from the last time this went around is that the page size On 29 July 2015 at 19:18, jefby notifications@github.com wrote:
|
It can be recovered by a syscall, or from the auxv variable passed to the The issue we probably cannot address for 1.5 is the page size value is used @khr would probably know more about this. Thanks Dave On Wed, 29 Jul 2015 17:18 jefby notifications@github.com wrote:
|
I don't think replacing _PhysPageSize with a variable would actually be very expensive. Unlike _PageSize, it's not used in many places. I think it's much too late to do this for 1.5, though we could query the physical page size from the OS at initialization time and at least check that it's <= _PhysPageSize. |
That's good to know. Phys page size is available via a syscall, or in the To be clear, I would not want to see this happen for 1.5. On Thu, 30 Jul 2015 02:14 Austin Clements notifications@github.com wrote:
|
I am 100% sure I set arm64 to use 64k pages. I am not sure how we ended up with 4k pages again. Oh well. |
Merged into #10180.
|
I'm attempting to build the golang 1.5 beta2 on the Arm64 port of CentOS 7, however I appear to be running into memory issues. The initial cross-compile completes successfully on an x86_64 CentOS-7 host via the following command
However when I move the resulting bootstrap tarball to the arm64 box, I immediately get a memory address space conflict no matter what go command I run.
I've tried a number of variations on the build theme, but they all fail in the same manner.
I think this is go assuming/forcing a 4K PAGESIZE rather than the 64K PAGESIZE we have on linux/arm64, but I don't know enough to verify this. Any help would be greatly appreciated.
The text was updated successfully, but these errors were encountered: