docker-ghidra-server icon indicating copy to clipboard operation
docker-ghidra-server copied to clipboard

Trouble getting the server to run | Repository directory must be specified!

Open AliceDTRH opened this issue 1 year ago • 8 comments
trafficstars

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.

AliceDTRH avatar Jun 19 '24 21:06 AliceDTRH

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?

bytehow avatar Jun 19 '24 21:06 bytehow

{
    "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.

AliceDTRH avatar Jun 19 '24 22:06 AliceDTRH

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

bytehow avatar Jun 19 '24 22:06 bytehow

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:

  1. Copy server.conf to /tmp/server.conf
  2. Add wrapper.debug=true to the bottom of the file
  3. 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

bytehow avatar Jun 19 '24 23:06 bytehow

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

server.conf.txt

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

AliceDTRH avatar Jun 20 '24 14:06 AliceDTRH

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!

AliceDTRH avatar Jun 20 '24 14:06 AliceDTRH

Awesome! Glad to hear it was solved. I'll add a check to the entrypoint to check for an empty hostname soon

bytehow avatar Jun 26 '24 19:06 bytehow

Had the same issue, listed fix worked, just needed to set the hostname to 0.0.0.0 and it worked out alright.

muddykat-tech avatar Aug 09 '24 12:08 muddykat-tech