docker-ghidra-server
docker-ghidra-server copied to clipboard
Trouble getting the server to run | Repository directory must be specified!
Docker log:
Adding user: alice
Adding user: username2
Adding user: username3
Adding user: username4
Using service wrapper: yajsw-stable-13.09
Running Ghidra Server...
YAJSW: yajsw-stable-13.09
OS : Linux/6.1.0-20-amd64/amd64
JVM : Oracle Corporation/17.0.2//usr/local/openjdk-17/64
Looking in classpath from {0} for {1}
org.rzo.yajsw.boot.WrapperClassLoader@42a57993
/com/sun/jna/linux-x86-64/libjnidispatch.so
Found library resource at {0}
jar:file:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/./lib/core/jna/jna-5.12.1.jar!/com/sun/jna/linux-x86-64/libjnidispatch.so
Extracting library to {0}
/tmp/jna9155586248004075530.tmp
Trying {0}
/tmp/jna9155586248004075530.tmp
Found jnidispatch at {0}
/tmp/jna9155586248004075530.tmp
wrapper.logfile.umask -1
initOutputFiles: -1
open umask -1
wrapper|YAJSW: yajsw-stable-13.09
wrapper|OS : Linux/6.1.0-20-amd64/amd64
wrapper|JVM : Oracle Corporation/17.0.2//usr/local/openjdk-17/64
system.env 20
env result 20
wrapper|exec:/usr/local/openjdk-17/bin/java -classpath /ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapperApp.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/permit/permit-reflect-0.4.jar:/ghidra/Ghidra/Features/GhidraServer/lib/GhidraServer.jar:/ghidra/Ghidra/Framework/FileSystem/lib/FileSystem.jar:/ghidra/Ghidra/Framework/DB/lib/DB.jar:/ghidra/Ghidra/Framework/Docking/lib/Docking.jar:/ghidra/Ghidra/Framework/Help/lib/Help.jar:/ghidra/Ghidra/Framework/Gui/lib/Gui.jar:/ghidra/Ghidra/Framework/Generic/lib/Generic.jar:/ghidra/Ghidra/Framework/Utility/lib/Utility.jar:/ghidra/Ghidra/Framework/Generic/lib/guava-32.1.3-jre.jar:/ghidra/Ghidra/Framework/Generic/lib/failureaccess-1.0.1.jar:/ghidra/Ghidra/Framework/Generic/lib/jdom-legacy-1.1.3.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-core-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-api-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-collections4-4.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-compress-1.21.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-text-1.10.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-lang3-3.12.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-io-2.11.0.jar:/ghidra/Ghidra/Framework/Generic/lib/gson-2.9.0.jar:/ghidra/Ghidra/Framework/Generic/lib/bcpkix-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcprov-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcutil-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Help/lib/timingframework-1.0.jar:/ghidra/Ghidra/Framework/Help/lib/javahelp-2.0.05.jar:/ghidra/Ghidra/Framework/Gui/lib/flatlaf-3.2.1.jar -Djava.net.preferIPv4Stack=true -DApplicationRollingFileAppender.maxBackupIndex=10 -Dclasspath_frag=/ghidra/server/../Ghidra/Features/GhidraServer/data/classpath.frag -Djava.io.tmpdir=/tmp -Djna.tmpdir=/tmp -Dghidra.tls.server.protocols=TLSv1.2;TLSv1.3 -Djdk.tls.server.cipherSuites=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_AES_256_GCM_SHA384 -Ddb.buffers.DataBuffer.compressedOutput=true -Xms396m -Xmx768m -Djava=/usr/local/openjdk-17/bin/java -Dghidra_home=/ghidra/server/.. -Dwrapper_tmpdir=/tmp -Dwrapper.port=15003 -Dwrapper.key=6324715442322199425 -Dwrapper.teeName=6324715442322199425$1718831385365 -Dwrapper.tmp.path=/tmp -Djna_tmpdir=/tmp -Dwrapper.config=/ghidra/server/server.conf org.rzo.yajsw.app.WrapperJVMMain
wrapper|posix_spawn pid 88
post start false 6324715442322199425$1718831385365
wrapper|started process with pid 88
88/0|Repository directory must be specified!
88/0|Usage: java ghidra.server.remote.GhidraServer[-ip <hostname>] [-i #.#.#.#] [-p#] [-n] [-a#] [-d<ad_domain>] [-e<days>] [-jaas <config_file>] [-u] [-autoProvision] [-anonymous] [-ssh] <repository_path>
wrapper|waitpid 88 65280
wrapper|exit code posix process: 65280 application(status/signal): 255/-1
wrapper|Shutting down Wrapper
My linux version
alice@debian:/DATA/AppData/ghidra-server$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
My docker version
alice@debian:/DATA/AppData/ghidra-server$ docker -v
Docker version 26.1.1, build 4cf5afa
I'm trying to run the Ghidra server for a project I'm working on, but I can't seem to get it to run.
I used the bind mount option for /repos and it does seem to create folders and such in there.
I tried to run both latest and 11.0.3.
What is the exact docker command you are using to run the container? And can you show the output of docker inspect on the container?
{
"AppArmorProfile": "docker-default",
"Args": [
"server"
],
"Config": {
"AttachStderr": false,
"AttachStdin": false,
"AttachStdout": false,
"Cmd": [
"server"
],
"Domainname": "",
"Entrypoint": [
"/entrypoint.sh"
],
"Env": [
"GHIDRA_USERS=alice username2 username3 username4",
"PATH=/usr/local/openjdk-17/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/usr/local/openjdk-17",
"LANG=C.UTF-8",
"JAVA_VERSION=17.0.2",
"VERSION=11.0.3_PUBLIC",
"DL=https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_11.0.3_build/ghidra_11.0.3_PUBLIC_20240410.zip",
"GHIDRA_SHA=2462a2d0ab11e30f9e907cd3b4aa6b48dd2642f325617e3d922c28e752be6761"
],
"ExposedPorts": {
"13100/tcp": {},
"13101/tcp": {},
"13102/tcp": {}
},
"Hostname": "8a398eb3d78e",
"Image": "bytehow/ghidra-server:11.0.3",
"Labels": {},
"OnBuild": null,
"OpenStdin": false,
"StdinOnce": false,
"Tty": true,
"User": "",
"Volumes": {
"/repos": {}
},
"WorkingDir": "/ghidra"
},
"Created": "2024-06-19T21:09:28.861655034Z",
"Driver": "overlay2",
"ExecIDs": null,
"GraphDriver": {
"Data": {
"LowerDir": "/home/docker/overlay2/4c8a47af57f2604b6537e1a1739c43c3c99867adc0ebe6f891ac157c02ce2c2b-init/diff:/home/docker/overlay2/c122dd7e4d22f71ee3e7061e8424b378bdfc723d935fee262f343964c7cefb71/diff:/home/docker/overlay2/8756e6ab5315f54f1cb59d7a5897aaed873aa7b09b0b782be92899f088c8bcde/diff:/home/docker/overlay2/61a3f3fe21685be48eac1bd7d2dd0194af59e12fc3c4e53f102c57d193a6a9f9/diff:/home/docker/overlay2/5eda68d9ee4a4c8f098c63342010fdec0c730c7f1a733b71e19d4e611606d9f1/diff:/home/docker/overlay2/8c9a7a7f56f20db8e289c8a9cd99924d9e6ce6dd4b89aa96c28b1d28e1333e2c/diff:/home/docker/overlay2/17c61817838bf93f7526b61dcb1d72492297348aed0d093d2df4cd0eab153d26/diff:/home/docker/overlay2/7300ad1d226a1b92b579c3e03b765b762b6fb516c131e987af41268036f58e14/diff:/home/docker/overlay2/9c0fa3843e76cf86a79123a1efe66379303c21cdbc3cf1ecf5a20745eb538ff7/diff",
"MergedDir": "/home/docker/overlay2/4c8a47af57f2604b6537e1a1739c43c3c99867adc0ebe6f891ac157c02ce2c2b/merged",
"UpperDir": "/home/docker/overlay2/4c8a47af57f2604b6537e1a1739c43c3c99867adc0ebe6f891ac157c02ce2c2b/diff",
"WorkDir": "/home/docker/overlay2/4c8a47af57f2604b6537e1a1739c43c3c99867adc0ebe6f891ac157c02ce2c2b/work"
},
"Name": "overlay2"
},
"HostConfig": {
"AutoRemove": false,
"Binds": [
"/DATA/AppData/ghidra-server:/repos"
],
"BlkioDeviceReadBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceWriteIOps": null,
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"CapAdd": [
"AUDIT_WRITE",
"CHOWN",
"DAC_OVERRIDE",
"FOWNER",
"FSETID",
"KILL",
"MKNOD",
"NET_BIND_SERVICE",
"NET_RAW",
"SETFCAP",
"SETGID",
"SETPCAP",
"SETUID",
"SYS_CHROOT"
],
"CapDrop": [
"AUDIT_CONTROL",
"BLOCK_SUSPEND",
"DAC_READ_SEARCH",
"IPC_LOCK",
"IPC_OWNER",
"LEASE",
"LINUX_IMMUTABLE",
"MAC_ADMIN",
"MAC_OVERRIDE",
"NET_ADMIN",
"NET_BROADCAST",
"SYSLOG",
"SYS_ADMIN",
"SYS_BOOT",
"SYS_MODULE",
"SYS_NICE",
"SYS_PACCT",
"SYS_PTRACE",
"SYS_RAWIO",
"SYS_RESOURCE",
"SYS_TIME",
"SYS_TTY_CONFIG",
"WAKE_ALARM"
],
"Cgroup": "",
"CgroupParent": "",
"CgroupnsMode": "private",
"ConsoleSize": [
0,
0
],
"ContainerIDFile": "",
"CpuCount": 0,
"CpuPercent": 0,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpuShares": 0,
"CpusetCpus": "",
"CpusetMems": "",
"DeviceCgroupRules": null,
"DeviceRequests": [],
"Devices": [],
"Dns": [],
"DnsOptions": null,
"DnsSearch": null,
"ExtraHosts": [],
"GroupAdd": null,
"IOMaximumBandwidth": 0,
"IOMaximumIOps": 0,
"Init": false,
"IpcMode": "private",
"Isolation": "",
"Links": null,
"LogConfig": {
"Config": {},
"Type": "json-file"
},
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware",
"/sys/devices/virtual/powercap"
],
"Memory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"NanoCpus": 0,
"NetworkMode": "bridge",
"OomKillDisable": null,
"OomScoreAdj": 0,
"PidMode": "",
"PidsLimit": null,
"PortBindings": {
"13100/tcp": [
{
"HostIp": "",
"HostPort": "13100"
}
],
"13101/tcp": [
{
"HostIp": "",
"HostPort": "13101"
}
],
"13102/tcp": [
{
"HostIp": "",
"HostPort": "13102"
}
]
},
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
],
"ReadonlyRootfs": false,
"RestartPolicy": {
"MaximumRetryCount": 0,
"Name": "no"
},
"Runtime": "runc",
"SecurityOpt": null,
"ShmSize": 67108864,
"UTSMode": "",
"Ulimits": null,
"UsernsMode": "",
"VolumeDriver": "",
"VolumesFrom": null
},
"HostnamePath": "/home/docker/containers/6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f/hostname",
"HostsPath": "/home/docker/containers/6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f/hosts",
"Id": "6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f",
"Image": "sha256:37d4b9a329a9a63deebc97e4ef325d47010d55c568743788d9e2714ccc25a7f5",
"LogPath": "/home/docker/containers/6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f/6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f-json.log",
"MountLabel": "",
"Mounts": [
{
"Destination": "/repos",
"Mode": "",
"Propagation": "rprivate",
"RW": true,
"Source": "/DATA/AppData/ghidra-server",
"Type": "bind"
}
],
"Name": "/ghidra-server",
"NetworkSettings": {
"Bridge": "",
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"HairpinMode": false,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"MacAddress": "",
"Networks": {
"bridge": {
"Aliases": null,
"DNSNames": null,
"DriverOpts": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAMConfig": {},
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"Links": null,
"MacAddress": "",
"NetworkID": "37ec44982fd7f3f059030f428565a2796d2e9b79e26f34b2ab6a7c9e9e621a55"
}
},
"Ports": {},
"SandboxID": "04b894bb9b4f7401ccb0b47e40c4e2e81495393358b998fd36912c7fa348ba7d",
"SandboxKey": "/var/run/docker/netns/04b894bb9b4f",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null
},
"Path": "/entrypoint.sh",
"Platform": "linux",
"Portainer": {
"ResourceControl": {
"Id": 24,
"ResourceId": "6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f",
"SubResourceIds": [],
"Type": 1,
"UserAccesses": [],
"TeamAccesses": [],
"Public": false,
"AdministratorsOnly": true,
"System": false
}
},
"ProcessLabel": "",
"ResolvConfPath": "/home/docker/containers/6d8c458cab5daee0a1867050adc0e808be437e70b4dc5ccfaa06c43e50ee968f/resolv.conf",
"RestartCount": 0,
"State": {
"Dead": false,
"Error": "",
"ExitCode": 0,
"FinishedAt": "2024-06-19T21:09:52.47762927Z",
"OOMKilled": false,
"Paused": false,
"Pid": 0,
"Restarting": false,
"Running": false,
"StartedAt": "2024-06-19T21:09:44.629123461Z",
"Status": "exited"
}
}
I ran this one with Portainer so I can't give you the exact run command used, but I filled in the information exactly the same as in this command:
sudo docker run -it --rm --name ghidra-server -e GHIDRA_USERS="alice username2 username3 username4" -v /DATA/AppData/ghidra-server/:/repos -p 13100-13102:13100-13102 bytehow/ghidra-server
I also ran it with that exact command (but with a different name) and I get the same error.
I was able to run 11.0.3/latest with the example command given in the README, so I'm not sure what's happening in your container. It seems like it's not picking up ${ghidra.repositories.dir} in server.confg...
Can you show me the server.conf from inside the container? docker exec ghidra-server cat /ghidra/server/server.conf
We can also see what YAJSW (Yet Another Java Service Wrapper), which is the wrapper that Ghidra uses, is doing to launch Ghidra. You'd have to modify server.conf:
- Copy
server.confto/tmp/server.conf - Add
wrapper.debug=trueto the bottom of the file - Mount it into the container and start the container
sudo docker run -it --rm \
--name ghidra-server \
-e GHIDRA_USERS="alice username2 username3 username4" \
-v /DATA/AppData/ghidra-server/:/repos \
-v /tmp/server.conf:/ghidra/server/server.conf \
-p 13100-13102:13100-13102 \
bytehow/ghidra-server
And then share the logs
Here's the file you asked for. I got it using:
until sudo docker exec ghidra-server cat /ghidra/server/server.conf>server.conf.txt; do sleep 1; done
Here is the output from the wrapper debug:
Adding user: alice
Adding user: username2
Adding user: username3
Adding user: username4
Using service wrapper: yajsw-stable-13.09
Running Ghidra Server...
YAJSW: yajsw-stable-13.09
OS : Linux/6.1.0-20-amd64/amd64
JVM : Oracle Corporation/17.0.2//usr/local/openjdk-17/64
Looking in classpath from {0} for {1}
org.rzo.yajsw.boot.WrapperClassLoader@42a57993
/com/sun/jna/linux-x86-64/libjnidispatch.so
Found library resource at {0}
jar:file:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/./lib/core/jna/jna-5.12.1.jar!/com/sun/jna/linux-x86-64/libjnidispatch.so
Extracting library to {0}
/tmp/jna15256843352568261345.tmp
Trying {0}
/tmp/jna15256843352568261345.tmp
Found jnidispatch at {0}
/tmp/jna15256843352568261345.tmp
wrapper.logfile.umask -1
initOutputFiles: -1
open umask -1
wrapper|YAJSW: yajsw-stable-13.09
wrapper|OS : Linux/6.1.0-20-amd64/amd64
wrapper|JVM : Oracle Corporation/17.0.2//usr/local/openjdk-17/64
Java version: {}
17
java.nio.DirectByteBuffer.<init>(long, int): {}
unavailable
maxDirectMemory: {} bytes (maybe)
4158652416
-Dio.netty.tmpdir: {} (java.io.tmpdir)
/tmp
-Dio.netty.bitMode: {} (sun.arch.data.model)
64
-Dio.netty.maxDirectMemory: {} bytes
-1
-Dio.netty.uninitializedArrayAllocationThreshold: {}
-1
java.nio.ByteBuffer.cleaner(): unavailable
-Dio.netty.noPreferDirect: {}
true
-Dio.netty.threadLocalMap.stringBuilder.initialSize: {}
1024
-Dio.netty.threadLocalMap.stringBuilder.maxSize: {}
4096
wrapper|start from Thread main
wrapper|set state IDLE->STARTING
wrapper|starting Process
wrapper|starting controller
wrapper|binding to port 15003
-Dio.netty.processId: {} (auto-detected)
60
-Djava.net.preferIPv4Stack: {}
false
-Djava.net.preferIPv6Addresses: {}
false
Loopback interface: {} ({}, {})
lo
lo
0:0:0:0:0:0:0:1%lo
{}: {}
/proc/sys/net/core/somaxconn
4096
-Dio.netty.machineId: {} (auto-detected)
02:42:ac:ff:fe:11:00:08
-D{}: {}
io.netty.leakDetection.level
simple
-D{}: {}
io.netty.leakDetection.targetRecords
4
-Dio.netty.allocator.numHeapArenas: {}
8
-Dio.netty.allocator.numDirectArenas: {}
8
-Dio.netty.allocator.pageSize: {}
8192
-Dio.netty.allocator.maxOrder: {}
9
-Dio.netty.allocator.chunkSize: {}
4194304
-Dio.netty.allocator.smallCacheSize: {}
256
-Dio.netty.allocator.normalCacheSize: {}
64
-Dio.netty.allocator.maxCachedBufferCapacity: {}
32768
-Dio.netty.allocator.cacheTrimInterval: {}
8192
-Dio.netty.allocator.cacheTrimIntervalMillis: {}
0
-Dio.netty.allocator.useCacheForAllThreads: {}
false
-Dio.netty.allocator.maxCachedByteBuffersPerChunk: {}
1023
-Dio.netty.allocator.type: {}
pooled
-Dio.netty.threadLocalDirectBufferSize: {}
0
-Dio.netty.maxThreadLocalCharBufferSize: {}
16384
wrapper|Controller State: UNKNOWN -> WAITING
wrapper|binding successfull
wrapper|controller started
wrapper|working dir /ghidra/server/..
system.env 20
env result 20
wrapper|spawning wrapped process
wrapper|exec:/usr/local/openjdk-17/bin/java -classpath /ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapperApp.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/permit/permit-reflect-0.4.jar:/ghidra/Ghidra/Features/GhidraServer/lib/GhidraServer.jar:/ghidra/Ghidra/Framework/FileSystem/lib/FileSystem.jar:/ghidra/Ghidra/Framework/DB/lib/DB.jar:/ghidra/Ghidra/Framework/Docking/lib/Docking.jar:/ghidra/Ghidra/Framework/Help/lib/Help.jar:/ghidra/Ghidra/Framework/Gui/lib/Gui.jar:/ghidra/Ghidra/Framework/Generic/lib/Generic.jar:/ghidra/Ghidra/Framework/Utility/lib/Utility.jar:/ghidra/Ghidra/Framework/Generic/lib/guava-32.1.3-jre.jar:/ghidra/Ghidra/Framework/Generic/lib/failureaccess-1.0.1.jar:/ghidra/Ghidra/Framework/Generic/lib/jdom-legacy-1.1.3.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-core-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-api-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-collections4-4.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-compress-1.21.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-text-1.10.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-lang3-3.12.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-io-2.11.0.jar:/ghidra/Ghidra/Framework/Generic/lib/gson-2.9.0.jar:/ghidra/Ghidra/Framework/Generic/lib/bcpkix-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcprov-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcutil-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Help/lib/timingframework-1.0.jar:/ghidra/Ghidra/Framework/Help/lib/javahelp-2.0.05.jar:/ghidra/Ghidra/Framework/Gui/lib/flatlaf-3.2.1.jar -Djava.net.preferIPv4Stack=true -DApplicationRollingFileAppender.maxBackupIndex=10 -Dclasspath_frag=/ghidra/server/../Ghidra/Features/GhidraServer/data/classpath.frag -Djava.io.tmpdir=/tmp -Djna.tmpdir=/tmp -Dghidra.tls.server.protocols=TLSv1.2;TLSv1.3 -Djdk.tls.server.cipherSuites=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_AES_256_GCM_SHA384 -Ddb.buffers.DataBuffer.compressedOutput=true -Xms396m -Xmx768m -Djava=/usr/local/openjdk-17/bin/java -Dghidra_home=/ghidra/server/.. -Dwrapper_tmpdir=/tmp -Dwrapper.port=15003 -Dwrapper.key=-619155150303709457 -Dwrapper.teeName=-619155150303709457$1718892287782 -Dwrapper.tmp.path=/tmp -Djna_tmpdir=/tmp -Dwrapper.config=/ghidra/server/server.conf org.rzo.yajsw.app.WrapperJVMMain
wrapper|posix spawn setting env var PATH=/usr/local/openjdk-17/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
wrapper|posix spawn setting env var GHIDRA_PUBLIC_HOSTNAME=
wrapper|posix spawn setting env var GHIDRA_USERS=alice username2 username3 username4
wrapper|posix spawn setting env var DL=https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_11.0.3_build/ghidra_11.0.3_PUBLIC_20240410.zip
wrapper|posix spawn setting env var JAVA_HOME=/usr/local/openjdk-17
wrapper|posix spawn setting env var ghidra_home=/ghidra/server/..
wrapper|posix spawn setting env var OLDPWD=/ghidra
wrapper|posix spawn setting env var TERM=xterm
wrapper|posix spawn setting env var LANG=C.UTF-8
wrapper|posix spawn setting env var wrapper_tmpdir=/tmp
wrapper|posix spawn setting env var GHIDRA_SHA=2462a2d0ab11e30f9e907cd3b4aa6b48dd2642f325617e3d922c28e752be6761
wrapper|posix spawn setting env var java=/usr/local/openjdk-17/bin/java
wrapper|posix spawn setting env var HOSTNAME=98e171c87fe5
wrapper|posix spawn setting env var VERSION=11.0.3_PUBLIC
wrapper|posix spawn setting env var classpath_frag=/ghidra/server/../Ghidra/Features/GhidraServer/data/classpath.frag
wrapper|posix spawn setting env var JAVA_VERSION=17.0.2
wrapper|posix spawn setting env var PWD=/ghidra/server
wrapper|posix spawn setting env var SHLVL=1
wrapper|posix spawn setting env var HOME=/root
wrapper|posix spawn setting env var _=/usr/local/openjdk-17/bin/java
wrapper|spawn exec: /usr/local/openjdk-17/bin/java -Djna_tmpdir=/tmp -classpath /ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapper.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/jna/jna-5.12.1.jar -Dwrapperx.umask=23 -Dwrapperx.workingdir=/ghidra/server/.. org.rzo.yajsw.os.posix.PosixSpawnMain /usr/local/openjdk-17/bin/java -classpath /ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapperApp.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/permit/permit-reflect-0.4.jar:/ghidra/Ghidra/Features/GhidraServer/lib/GhidraServer.jar:/ghidra/Ghidra/Framework/FileSystem/lib/FileSystem.jar:/ghidra/Ghidra/Framework/DB/lib/DB.jar:/ghidra/Ghidra/Framework/Docking/lib/Docking.jar:/ghidra/Ghidra/Framework/Help/lib/Help.jar:/ghidra/Ghidra/Framework/Gui/lib/Gui.jar:/ghidra/Ghidra/Framework/Generic/lib/Generic.jar:/ghidra/Ghidra/Framework/Utility/lib/Utility.jar:/ghidra/Ghidra/Framework/Generic/lib/guava-32.1.3-jre.jar:/ghidra/Ghidra/Framework/Generic/lib/failureaccess-1.0.1.jar:/ghidra/Ghidra/Framework/Generic/lib/jdom-legacy-1.1.3.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-core-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-api-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-collections4-4.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-compress-1.21.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-text-1.10.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-lang3-3.12.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-io-2.11.0.jar:/ghidra/Ghidra/Framework/Generic/lib/gson-2.9.0.jar:/ghidra/Ghidra/Framework/Generic/lib/bcpkix-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcprov-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcutil-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Help/lib/timingframework-1.0.jar:/ghidra/Ghidra/Framework/Help/lib/javahelp-2.0.05.jar:/ghidra/Ghidra/Framework/Gui/lib/flatlaf-3.2.1.jar -Djava.net.preferIPv4Stack=true -DApplicationRollingFileAppender.maxBackupIndex=10 -Dclasspath_frag=/ghidra/server/../Ghidra/Features/GhidraServer/data/classpath.frag -Djava.io.tmpdir=/tmp -Djna.tmpdir=/tmp -Dghidra.tls.server.protocols=TLSv1.2;TLSv1.3 -Djdk.tls.server.cipherSuites=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_AES_256_GCM_SHA384 -Ddb.buffers.DataBuffer.compressedOutput=true -Xms396m -Xmx768m -Djava=/usr/local/openjdk-17/bin/java -Dghidra_home=/ghidra/server/.. -Dwrapper_tmpdir=/tmp -Dwrapper.port=15003 -Dwrapper.key=-619155150303709457 -Dwrapper.teeName=-619155150303709457$1718892287782 -Dwrapper.tmp.path=/tmp -Djna_tmpdir=/tmp -Dwrapper.config=/ghidra/server/server.conf org.rzo.yajsw.app.WrapperJVMMain
spawnCmd:
/usr/local/openjdk-17/bin/java -Djna_tmpdir=/tmp -classpath /ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapper.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/jna/jna-5.12.1.jar -Dwrapperx.umask=23 -Dwrapperx.workingdir=/ghidra/server/.. org.rzo.yajsw.os.posix.PosixSpawnMain /usr/local/openjdk-17/bin/java -classpath /ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapperApp.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/permit/permit-reflect-0.4.jar:/ghidra/Ghidra/Features/GhidraServer/lib/GhidraServer.jar:/ghidra/Ghidra/Framework/FileSystem/lib/FileSystem.jar:/ghidra/Ghidra/Framework/DB/lib/DB.jar:/ghidra/Ghidra/Framework/Docking/lib/Docking.jar:/ghidra/Ghidra/Framework/Help/lib/Help.jar:/ghidra/Ghidra/Framework/Gui/lib/Gui.jar:/ghidra/Ghidra/Framework/Generic/lib/Generic.jar:/ghidra/Ghidra/Framework/Utility/lib/Utility.jar:/ghidra/Ghidra/Framework/Generic/lib/guava-32.1.3-jre.jar:/ghidra/Ghidra/Framework/Generic/lib/failureaccess-1.0.1.jar:/ghidra/Ghidra/Framework/Generic/lib/jdom-legacy-1.1.3.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-core-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-api-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-collections4-4.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-compress-1.21.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-text-1.10.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-lang3-3.12.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-io-2.11.0.jar:/ghidra/Ghidra/Framework/Generic/lib/gson-2.9.0.jar:/ghidra/Ghidra/Framework/Generic/lib/bcpkix-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcprov-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcutil-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Help/lib/timingframework-1.0.jar:/ghidra/Ghidra/Framework/Help/lib/javahelp-2.0.05.jar:/ghidra/Ghidra/Framework/Gui/lib/flatlaf-3.2.1.jar -Djava.net.preferIPv4Stack=true -DApplicationRollingFileAppender.maxBackupIndex=10 -Dclasspath_frag=/ghidra/server/../Ghidra/Features/GhidraServer/data/classpath.frag -Djava.io.tmpdir=/tmp -Djna.tmpdir=/tmp -Dghidra.tls.server.protocols=TLSv1.2;TLSv1.3 -Djdk.tls.server.cipherSuites=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_AES_256_GCM_SHA384 -Ddb.buffers.DataBuffer.compressedOutput=true -Xms396m -Xmx768m -Djava=/usr/local/openjdk-17/bin/java -Dghidra_home=/ghidra/server/.. -Dwrapper_tmpdir=/tmp -Dwrapper.port=15003 -Dwrapper.key=-619155150303709457 -Dwrapper.teeName=-619155150303709457$1718892287782 -Dwrapper.tmp.path=/tmp -Djna_tmpdir=/tmp -Dwrapper.config=/ghidra/server/server.conf org.rzo.yajsw.app.WrapperJVMMain
wrapper|posix_spawn pid 89
post start false -619155150303709457$1718892287782
wrapper|started process with pid 89
wrapper|waiting for termination of process
wrapper|set state STARTING->RUNNING
89/0|APP user name=root
89/0|APP working dir=/ghidra
89/0|APP java version=17.0.2
89/0|APP class path=/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/wrapperApp.jar:/ghidra/Ghidra/Features/GhidraServer/data/yajsw-stable-13.09/lib/core/permit/permit-reflect-0.4.jar:/ghidra/Ghidra/Features/GhidraServer/lib/GhidraServer.jar:/ghidra/Ghidra/Framework/FileSystem/lib/FileSystem.jar:/ghidra/Ghidra/Framework/DB/lib/DB.jar:/ghidra/Ghidra/Framework/Docking/lib/Docking.jar:/ghidra/Ghidra/Framework/Help/lib/Help.jar:/ghidra/Ghidra/Framework/Gui/lib/Gui.jar:/ghidra/Ghidra/Framework/Generic/lib/Generic.jar:/ghidra/Ghidra/Framework/Utility/lib/Utility.jar:/ghidra/Ghidra/Framework/Generic/lib/guava-32.1.3-jre.jar:/ghidra/Ghidra/Framework/Generic/lib/failureaccess-1.0.1.jar:/ghidra/Ghidra/Framework/Generic/lib/jdom-legacy-1.1.3.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-core-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/log4j-api-2.17.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-collections4-4.1.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-compress-1.21.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-text-1.10.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-lang3-3.12.0.jar:/ghidra/Ghidra/Framework/Generic/lib/commons-io-2.11.0.jar:/ghidra/Ghidra/Framework/Generic/lib/gson-2.9.0.jar:/ghidra/Ghidra/Framework/Generic/lib/bcpkix-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcprov-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Generic/lib/bcutil-jdk15on-1.69.jar:/ghidra/Ghidra/Framework/Help/lib/timingframework-1.0.jar:/ghidra/Ghidra/Framework/Help/lib/javahelp-2.0.05.jar:/ghidra/Ghidra/Framework/Gui/lib/flatlaf-3.2.1.jar
89/0|APP library path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
89/0|Application args: no args
89/0|mainClass/jar/script/module: ghidra.server.remote.GhidraServer/null/null/null
89/0|external stop false
89/0|args:
89/0|-a0
89/0|-u
89/0|-ip
89/0|/repos
89/0|monitor deadlock: start
89/0|terminated WrapperManager.init()
89/0|Repository directory must be specified!
89/0|Usage: java ghidra.server.remote.GhidraServer[-ip <hostname>] [-i #.#.#.#] [-p#] [-n] [-a#] [-d<ad_domain>] [-e<days>] [-jaas <config_file>] [-u] [-autoProvision] [-anonymous] [-ssh] <repository_path>
wrapper|waitpid 89 65280
wrapper|exit code posix process: 65280 application(status/signal): 255/-1
89/0|process terminated
89/0|Controller State: WAITING -> PROCESS_KILLED
wrapper|giving up after 0 retries
wrapper|set state RUNNING->STATE_ABORT
wrapper|stop from Thread yajsw.controller-1 reason: USER
wrapper|process not in state RUNNING -> Delaying stop
wrapper|set state STATE_ABORT->IDLE
wrapper|Shutting down Wrapper
I just noticed that -ip is empty. So I thought that might be causing the server to assume /repo is the value for that flag. When I set GHIDRA_PUBLIC_HOSTNAME to 0.0.0.0 it looks like it starts up!
Awesome! Glad to hear it was solved. I'll add a check to the entrypoint to check for an empty hostname soon
Had the same issue, listed fix worked, just needed to set the hostname to 0.0.0.0 and it worked out alright.