Failed to run on arm64

What I want to do

I want to run dgraph on the arm64 environment,But I encountered an error

./dgraph version
<jemalloc>: Unsupported system page size
<jemalloc>: Unsupported system page size
fatal error: out of memory

goroutine 1 [running, locked to thread]:
runtime.throw({0x1ec875b?, 0x1?})
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/panic.go:1047 +0x40 fp=0x40002df370 sp=0x40002df340 pc=0xb8f9e0
github.com/dgraph-io/ristretto/z.Calloc(0x1, {0x1ec97c5, 0xe})
        /home/ubuntu/go/pkg/mod/github.com/dgraph-io/ristretto@v0.1.1/z/calloc_jemalloc.go:78 +0x58 fp=0x40002df3b0 sp=0x40002df370 pc=0x10d5338
github.com/dgraph-io/ristretto/z.CallocNoRef(...)
        /home/ubuntu/go/pkg/mod/github.com/dgraph-io/ristretto@v0.1.1/z/calloc_jemalloc.go:95
github.com/dgraph-io/dgraph/x.BuildDetails()
        /home/ubuntu/actions-runner/_work/dgraph/dgraph/x/init.go:57 +0x94 fp=0x40002df4c0 sp=0x40002df3b0 pc=0x14ecc04
github.com/dgraph-io/dgraph/x.init()
        /home/ubuntu/actions-runner/_work/dgraph/dgraph/x/x.go:1370 +0x4068 fp=0x40002df6b0 sp=0x40002df4c0 pc=0x1506438
runtime.doInit(0x2d56a80)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6331 +0x128 fp=0x40002df7f0 sp=0x40002df6b0 pc=0xba0448
runtime.doInit(0x2d3abe0)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6308 +0x68 fp=0x40002df930 sp=0x40002df7f0 pc=0xba0388
runtime.doInit(0x2d452c0)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6308 +0x68 fp=0x40002dfa70 sp=0x40002df930 pc=0xba0388
runtime.doInit(0x2d4e820)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6308 +0x68 fp=0x40002dfbb0 sp=0x40002dfa70 pc=0xba0388
runtime.doInit(0x2d520e0)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6308 +0x68 fp=0x40002dfcf0 sp=0x40002dfbb0 pc=0xba0388
runtime.doInit(0x2d4e280)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6308 +0x68 fp=0x40002dfe30 sp=0x40002dfcf0 pc=0xba0388
runtime.doInit(0x2d407a0)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:6308 +0x68 fp=0x40002dff70 sp=0x40002dfe30 pc=0xba0388
runtime.main()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:233 +0x1f8 fp=0x40002dffd0 sp=0x40002dff70 pc=0xb92238
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40002dffd0 sp=0x40002dffd0 pc=0xbc5684

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:363 +0xe4 fp=0x4000072fa0 sp=0x4000072f80 pc=0xb92664
runtime.goparkunlock(...)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:369
runtime.forcegchelper()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:302 +0xb4 fp=0x4000072fd0 sp=0x4000072fa0 pc=0xb924f4
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000072fd0 sp=0x4000072fd0 pc=0xbc5684
created by runtime.init.6
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:290 +0x24

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:363 +0xe4 fp=0x4000073770 sp=0x4000073750 pc=0xb92664
runtime.goparkunlock(...)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgcsweep.go:278 +0xa4 fp=0x40000737b0 sp=0x4000073770 pc=0xb7b4d4
runtime.gcenable.func1()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgc.go:178 +0x28 fp=0x40000737d0 sp=0x40000737b0 pc=0xb6f818
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000737d0 sp=0x40000737d0 pc=0xbc5684
created by runtime.gcenable
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgc.go:178 +0x70

goroutine 4 [GC scavenge wait]:
runtime.gopark(0x400009a000?, 0x22181e0?, 0x1?, 0x0?, 0x0?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:363 +0xe4 fp=0x4000073f50 sp=0x4000073f30 pc=0xb92664
runtime.goparkunlock(...)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:369
runtime.(*scavengerState).park(0x2f2ad40)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgcscavenge.go:389 +0x5c fp=0x4000073f80 sp=0x4000073f50 pc=0xb793ec
runtime.bgscavenge(0x0?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgcscavenge.go:617 +0x44 fp=0x4000073fb0 sp=0x4000073f80 pc=0xb79974
runtime.gcenable.func2()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgc.go:179 +0x28 fp=0x4000073fd0 sp=0x4000073fb0 pc=0xb6f7b8
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000073fd0 sp=0x4000073fd0 pc=0xbc5684
created by runtime.gcenable
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mgc.go:179 +0xb4

goroutine 5 [finalizer wait]:
runtime.gopark(0x60000000000000?, 0x0?, 0x8?, 0x1?, 0x2000000000?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:363 +0xe4 fp=0x4000072580 sp=0x4000072560 pc=0xb92664
runtime.goparkunlock(...)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:369
runtime.runfinq()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mfinal.go:180 +0x128 fp=0x40000727d0 sp=0x4000072580 pc=0xb6ea38
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000727d0 sp=0x40000727d0 pc=0xbc5684
created by runtime.createfing
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/mfinal.go:157 +0x94

goroutine 6 [chan receive]:
runtime.gopark(0x40000746f8?, 0xbc210c?, 0x0?, 0x45?, 0x4000112008?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:363 +0xe4 fp=0x40000746a0 sp=0x4000074680 pc=0xb92664
runtime.chanrecv(0x400010e000, 0x4000074790, 0x1)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/chan.go:583 +0x47c fp=0x4000074730 sp=0x40000746a0 pc=0xb5a33c
runtime.chanrecv2(0x6fc23ac00?, 0x0?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/chan.go:447 +0x14 fp=0x4000074760 sp=0x4000074730 pc=0xb59ea4
github.com/golang/glog.(*loggingT).flushDaemon(0x0?)
        /home/ubuntu/go/pkg/mod/github.com/golang/glog@v1.0.0/glog.go:882 +0x5c fp=0x40000747b0 sp=0x4000074760 pc=0xcc642c
github.com/golang/glog.init.0.func1()
        /home/ubuntu/go/pkg/mod/github.com/golang/glog@v1.0.0/glog.go:410 +0x28 fp=0x40000747d0 sp=0x40000747b0 pc=0xcc3ea8
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000747d0 sp=0x40000747d0 pc=0xbc5684
created by github.com/golang/glog.init.0
        /home/ubuntu/go/pkg/mod/github.com/golang/glog@v1.0.0/glog.go:410 +0x200

goroutine 19 [select]:
runtime.gopark(0x4000074f78?, 0x3?, 0xb8?, 0x4e?, 0x4000074f62?)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/proc.go:363 +0xe4 fp=0x4000074e10 sp=0x4000074df0 pc=0xb92664
runtime.selectgo(0x4000074f78, 0x4000074f5c, 0x40003c6000?, 0x0, 0x400009ca80?, 0x1)
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/select.go:328 +0x6b4 fp=0x4000074f20 sp=0x4000074e10 pc=0xba3a04
go.opencensus.io/stats/view.(*worker).start(0x40003c6000)
        /home/ubuntu/go/pkg/mod/go.opencensus.io@v0.22.5/stats/view/worker.go:276 +0x88 fp=0x4000074fb0 sp=0x4000074f20 pc=0x138afb8
go.opencensus.io/stats/view.init.0.func1()
        /home/ubuntu/go/pkg/mod/go.opencensus.io@v0.22.5/stats/view/worker.go:34 +0x28 fp=0x4000074fd0 sp=0x4000074fb0 pc=0x138a308
runtime.goexit()
        /home/ubuntu/actions-runner/_work/_tool/go/1.19.12/arm64/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000074fd0 sp=0x4000074fd0 pc=0xbc5684
created by go.opencensus.io/stats/view.init.0
        /home/ubuntu/go/pkg/mod/go.opencensus.io@v0.22.5/stats/view/worker.go:34 +0xa4

What I did

I tried to recompile from the source code, but another error occurred

Installing Dgraph...
make[1]: Entering directory '/mnt/dgraph/arm64_dgraph_v22.0.2/xwtest/dgraph-23.1.0/dgraph'
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
Commit SHA256: 
Old SHA256:
# github.com/dgraph-io/ristretto/z
/root/go/pkg/mod/github.com/dgraph-io/ristretto@v0.1.1/z/calloc_jemalloc.go:73:9: could not determine kind of name for C.je_calloc
/root/go/pkg/mod/github.com/dgraph-io/ristretto@v0.1.1/z/calloc_jemalloc.go:103:3: could not determine kind of name for C.je_free
/root/go/pkg/mod/github.com/dgraph-io/ristretto@v0.1.1/z/calloc_jemalloc.go:143:2: could not determine kind of name for C.je_mallctl
/root/go/pkg/mod/github.com/dgraph-io/ristretto@v0.1.1/z/calloc_jemalloc.go:170:2: could not determine kind of name for C.je_malloc_stats_print
make[1]: *** [Makefile:96: install] Error 1
make[1]: Leaving directory '/mnt/dgraph/arm64_dgraph_v22.0.2/xwtest/dgraph-23.1.0/dgraph'
make: *** [Makefile:59: install] Error 2

Dgraph metadata

dgraph version 23.1.0

I’m not an expert on this, but the dgraph make process assumes you have a project checked out from git. At a minimum, it will log the current git commit hash, and perhaps also use that in the build so the binary can be traced to an exact configuration.

You may benefit from this arm64 docker build as well: Docker

Also, can you specify on what OS (and version) you are running the dgraph version command?

NAME=“Kylin Linux Advanced Server”
VERSION=“V10 (Sword)”
ID=“kylin”
VERSION_ID=“V10”
PRETTY_NAME=“Kylin Linux Advanced Server V10 (Sword)”
ANSI_COLOR=“0;31”

Thanks for that. The error messages may point to an inconsistency with the jemalloc implementation for this Linux variant. You can read about Dgraph’s use of jemalloc here

Some things to try:

What does a ls -l /usr/local/lib/libjemalloc.a produce?

If libjemalloc.a is not there, what does make jemalloc do (run from the dgraph subdirectory under the main repo folder)?

thank you for your help.

Jemalloc was installed separately by me, the version is 5.3.0, I use the following command to install

wget https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2
tar -jxvf jemalloc-5.3.0.tar.bz2
cd jemalloc-5.3.0
./autogen.sh
make -j2
sudo make install

Is there a problem with my installation method? Or is the version used incorrectly?

ls -l /usr/local/lib/libjemalloc.a produce this result
-rwxr-xr-x 1 root root 40955278 Mar 15 16:47 /usr/local/lib/libjemalloc.a

Have a look at the jemalloc target in the Makefile. It configures the build of jemalloc differently than you describe. Not certain that is the cause, but there’s a pretty good chance.

Could you backup your installed version of jemalloc and attempt a make jemalloc just to rule it out?

Your suggestion is effective.
The version of jemalloc I installed does not match the operating system. I uninstalled jemalloc and then reinstalled it using the sudo yum install jemalloc-devel command.
The compilation was successfully executed and it can now be used normally





Thank you again