Skip to content

Error messages ​

Every message Signal Lab can show when something fails, by its code: the code is what a run's report, the command line and the API give. Values in braces are filled in with what failed.

api ​

CodeMessage
api.not_foundThe server has no such address — the interface and the server are different versions
api.run_invalidThe run request cannot be read
api.run_sourceName the experiment once: a document or a template
api.template_unknownThere is no bundled template {name}

auth ​

CodeMessage
auth.hostThis server does not answer to that address — open it by its own name
auth.originThis request came from another site and was refused
auth.requiredSign in to this server first

broadcast ​

CodeMessage
broadcast.cidr_invalid{value} is not a CIDR block — use a.b.c.d/nn, e.g. 192.168.1.0/24
broadcast.interface_invalid{value} is not an IPv4 address — enter the interface's address, or leave it empty for any
broadcast.ipv6IPv6 has no broadcast — use multicast instead
broadcast.join_failedCannot join the multicast group {group}
broadcast.not_broadcast{target} is not a broadcast address — use 255.255.255.255:port or x.x.x.255:port
broadcast.not_multicast{target} is not a multicast group — use an address from 224.0.0.0 to 239.255.255.255
broadcast.port_shared{target} is already in use — turn on “share the port” to listen alongside it
broadcast.prefix_invalid/{value} is not a prefix length — use /0 to /32
broadcast.rate_invalidThe beacon rate must be above 0
broadcast.rate_limit{pps} packets/s across {targets} targets is over the {max} pps limit — lower the rate or narrow the target
broadcast.reply_missingThere is no reply to send — set one, or turn off “answer probes”
broadcast.sweep_portSet the port to sweep
broadcast.sweep_too_large/{prefix} spans {count} addresses, and a sweep reaches at most {max} hosts — narrow it to /{limit} or a smaller block
broadcast.target_requiredEnter at least one target

check ​

CodeMessage
check.body_missingThe response does not contain {text}
check.body_truncatedThe response ({bytes} B) is longer than the 256 KiB kept, so the text could not be checked
check.header_mismatchHeader {name} is {actual}, which does not contain {text}
check.header_missingThe response has no {name} header
check.latency_failedThe response took {actual} ms, over the {limit} ms limit
check.no_responseNo HTTP response before this step — put an HTTP request before it on every path
check.status_failedExpected HTTP {expected}, received {actual}
check.value_failedExpected: {value} {op} {expected}

cli ​

CodeMessage
cli.bind_one--bind sets the address of one emulator; several were given
cli.emulate_nothingNothing to emulate: the files hold no emulator
cli.emulator_unknown{name} is not a file, and {path} has no emulator by that id or name
cli.file_unknown{name} is neither a file nor a bundled template — signallab templates lists them
cli.header_invalid{value} is not a header — use 'Name: value'
cli.library_missingThere is no library at {path} — the app makes it the first time it starts; or name one with --library
cli.matrix_conflict{name} is set twice — by --param and the matrix, or by --matrix and the file; give it once
cli.matrix_file_invalid{path} is not a matrix: an object of NAME: [values], or a list of objects of NAME: value
cli.matrix_invalid{value} is not NAME=V1,V2
cli.matrix_too_large{n} combinations — at most {max} from one command
cli.matrix_too_wide{axes} axes multiply past any count — at most {max} combinations from one command
cli.matrix_unknown--matrix {name}: no experiment given has a parameter by that name
cli.matrix_value_invalid{name}: a matrix value is text, a number or true/false
cli.osc_arg_invalid{value} is not an OSC argument — use i:3, f:0.5, d:1.5, h:64, s:text, b:hex, T, F or N
cli.param_invalid{value} is not NAME=VALUE
cli.server_endedThe answer from {url} ended before the run did
cli.server_invalid{url} is not a server address — use one like http://127.0.0.1:1430
cli.server_reply{url} answered with something that is not Signal Lab's (HTTP {status})
cli.server_unreachableCannot reach the server at {url}
cli.signal_ambiguousSeveral signals are called {name} — name one by its id: {ids}
cli.signal_unknownNo signal {name} in {path}
cli.status_unexpectedThe response was {actual}, not {expected}
cli.token_emptyThe token file {path} is empty

command ​

CodeMessage
command.args_invalidThe engine could not read the arguments of {name} — the interface and the engine are different versions
command.json_requiredThe server takes commands only as JSON
command.reply_invalidThe engine could not encode its answer
command.unknownThe engine has no command {name} — the interface is newer than the engine

compare ​

CodeMessage
compare.not_numbers{value} and {expected} must both be numbers for this comparison

details ​

CodeMessage
detailsTechnical details

doc ​

CodeMessage
doc.connection_duplicateThe connection {from} → {to} appears twice
doc.connection_invalidConnection {from} → {to} leads to a missing node or back to itself
doc.name_requiredGive the experiment a name
doc.node_countAn experiment holds 1–{max} nodes
doc.node_id_duplicateTwo nodes share the id {id}
doc.node_id_emptyA node has an empty id
doc.port_invalidUnknown output {port}
doc.position_invalidThe node has an invalid position
doc.start_end_countAn experiment needs exactly one Start and one End
doc.version_unsupportedFile version {version} is not supported; this version of Signal Lab reads version {supported}

emulator ​

CodeMessage
emulator.accept_failedTaking connections on {target} stopped with an error
emulator.arg_value{value} is not a value of type {type}
emulator.args_too_manyAt most {max} arguments
emulator.bind_taken{target} is taken by another emulator of this experiment ({other})
emulator.body_failedThe request body could not be read
emulator.body_too_largeThe request body is larger than {max} KB
emulator.busyMore than {max} replies are waiting — this one was dropped
emulator.conditions_too_manyAt most {max} conditions
emulator.failedThe emulator stopped unexpectedly
emulator.header_value_invalidNot a valid header value — it may not hold line breaks
emulator.headers_too_manyAt most {max} headers
emulator.mqtt_client_idRefused a client without an id that asked to keep its session
emulator.mqtt_loginRefused {client}: wrong user name or password
emulator.mqtt_password_aloneMQTT 3.1.1 cannot carry a password without a user name, so no client could connect: set a user name too
emulator.mqtt_protocolRefused a client speaking {protocol} level {level}: this broker speaks MQTT 3.1.1 (level 4)
emulator.name_unknownUnknown name {{{name}}} — a reply reads {{request…}} and parameters
emulator.node_unknownThere is no emulator {id} in this experiment
emulator.not_in_runEmulator {id} is not part of this run
emulator.not_runningEmulator #{id} is not running
emulator.params_onlyOnly text and parameters here: it is fixed when the emulator starts, before anything arrives
emulator.path_param{value} is not a segment name — use :name with letters, digits and _
emulator.path_rest* can only be the whole last segment, as in /files/*
emulator.path_slashA path starts with /
emulator.response_requiredA route needs at least one response
emulator.responses_too_manyAt most {max} responses
emulator.rules_too_manyAt most {max} rules
emulator.secret_unsupportedAn emulator cannot read secrets
emulator.weights_zeroAt least one response needs a weight above 0

emulators ​

CodeMessage
emulators.encodeThe emulator library could not be written as JSON
emulators.json_invalid{path} is not a valid emulator file: JSON error at line {line}, column {column} — fix the file or remove it

extract ​

CodeMessage
extract.header_missingThe response has no {name} header
extract.json_missing{path} is not in the response
extract.no_match/{pattern}/ did not match the response body
extract.not_jsonThe response body is not JSON
extract.truncatedThe response ({bytes} B) is longer than the 256 KiB kept, so the value cannot be read reliably

feedback ​

CodeMessage
feedback.disabledFeedback is not being taken right now — write to info@proanima.net
feedback.email_invalidThat is not an e-mail address
feedback.failedThe feedback service answered HTTP {status}
feedback.file_too_large{name} is larger than {max_mb} MB
feedback.file_type{name}: a screenshot must be PNG, JPEG, WebP or GIF, and a log text
feedback.invalidThe feedback service did not accept the form
feedback.message_requiredWrite a message first
feedback.message_too_longThe message is longer than {max} characters
feedback.rate_limitedToo many messages from this address for now — try again in {retry_after_s} s
feedback.send_failedThe feedback service could not pass the message on to the mail server; try again later (reference {id})
feedback.too_largeEverything together is larger than {max_mb} MB
feedback.too_many_filesAt most {max} logs

file ​

CodeMessage
file.encodeThe experiment could not be written as JSON
file.ioCannot read or write {path}
file.json_invalidNot a valid experiment file: JSON error at line {line}, column {column}
file.not_found{path} is not a file in the server's data folder
file.too_largeExperiment files are at most {max} MiB

firewall ​

CodeMessage
firewall.declinedAdministrator rights were not given, so the firewall was not changed
firewall.failedThe firewall's rules could not be read or changed
firewall.serverA server's firewall is set on the server: run signallab firewall allow there, or ask its administrator
firewall.unsupportedThere is no per-program firewall to change here — open the ports in ufw or firewalld

graph ​

CodeMessage
graph.cycleThis node is part of a cycle; only a Loop's body may lead back to it
graph.needs_httpNeeds an HTTP request before it on every path
graph.outputs_requiredConnect the required outputs
graph.port_unexpectedOutput {port} does not belong to this node
graph.start_inputStart cannot have an input
graph.unreachableNot reachable from Start

hex ​

CodeMessage
hex.emptyNo bytes to send — enter pairs of hex digits such as de ad be ef
hex.invalid{value} is not hex bytes — use pairs of digits such as de ad be ef

http ​

CodeMessage
http.client_failedThe HTTP client could not be started
http.digest_invalidThe server asked for Digest without a realm or nonce
http.digest_not_offeredThe server answered 401 without asking for Digest
http.digest_other_originThe request was sent on to {origin}, which asked for Digest — only the origin the request names is answered
http.digest_unsupportedThe server asked for Digest with {algorithm}, which Signal Lab does not speak (it speaks MD5 and SHA-256)
http.duration_invalidThe duration must be 0 or more seconds
http.rate_invalidThe rate must be 0 or {min}–{max} requests/s

impair ​

CodeMessage
impair.bind_taken{target} is already {other}'s: two of the run's sockets cannot share a port
impair.loopThe relay's packets would come back to it through {target} and circle forever — point its target at the device
impair.not_runningImpairment {id} is not part of this run
impair.relay_unknownThere is no Impairment {id} in this experiment

inspect ​

CodeMessage
inspect.emptyThe capture is empty — nothing to save
inspect.frame_goneFrame #{seq} is no longer in the capture: newer frames took its place
inspect.no_payloadFrame #{seq} recorded only its size, not its bytes

json_path ​

CodeMessage
json_path.invalid{path} is not a JSON path — use $.field, $.items[0] or $["a b"]

load ​

CodeMessage
load.nothing_plannedThis profile sends no requests
load.spike_outsideThe spike must end within the duration
load.steps_out_of_rangeEvery step's rate must be 0–{max} requests/s
load.threshold{metric} was {actual}, the threshold {op} {value}
load.threshold_valueA threshold needs a number, 0 or more
load.thresholds_too_manyAt most {max} thresholds
load.too_longThe steps take longer than a run may last ({seconds} s)

loop ​

CodeMessage
loop.body_enteredOnly a Loop's Body output may lead into its body
loop.body_leavesInside a Loop's body every output leads on in the body or back to the Loop
loop.body_parallelInside a Loop's body an output has one wire: an iteration runs as one branch
loop.body_unsupportedStart, End, parallel branches, joins and other loops cannot be inside a Loop's body
loop.limitIterations: {max}; the exit condition never held (wire Limit to carry on)
loop.no_returnNothing on Body leads back to this Loop

mqtt ​

CodeMessage
mqtt.client_id_requiredEnter a client ID — brokers refuse an empty one
mqtt.filter_requiredAdd at least one topic filter
mqtt.no_answer{broker} accepted the connection but did not answer in time — is it an MQTT broker?
mqtt.not_connectedConnection #{id} is not open — connect to the broker first
mqtt.protocol{broker} answered with something other than MQTT 3.1.1
mqtt.refused{broker} refused the connection (return code {code})
mqtt.refused_client_id{broker} rejected the client ID — choose another one
mqtt.refused_credentials{broker} rejected the username or password
mqtt.refused_not_authorized{broker} did not authorize this client — check its access rules
mqtt.refused_protocol{broker} does not accept MQTT 3.1.1 clients
mqtt.refused_unavailable{broker} is unavailable right now — try again later
mqtt.subscribe_refused{broker} refused the subscription to {filter}
mqtt.topic_invalidThis topic cannot be published to
mqtt.topic_requiredEnter a topic to publish to

name ​

CodeMessage
name.no_value{name} has no value
name.not_on_every_path{{{name}}} is not set on every path before this step
name.unknownUnknown name {{{name}}} — add a parameter or extract a variable

netsim ​

CodeMessage
netsim.not_runningThe relay {id} is not running any more

node ​

CodeMessage
node.bind_invalid{value} is not a listening address — use IP:port, e.g. 0.0.0.0:9001
node.header_invalid{value} is not a valid header name
node.load_aloneLoad replaces Repeat and Retry: turn those off
node.load_unsupportedOnly an HTTP request can run under load
node.method_invalid{value} is not an HTTP method
node.not_foundNode {id} no longer exists
node.osc_addressOSC addresses start with / ({value})
node.params_onlyOnly parameters can be used here — the run subscribes before its first step
node.rangeMust be {min}–{max}
node.repeat_too_longThe repeats take longer than a run may last ({seconds} s)
node.repeat_too_manyMore than {max} sends: make the interval longer or the time shorter
node.repeat_unsupportedOnly steps that send can repeat
node.requiredRequired
node.retry_unsupportedOnly steps that send or listen can retry
node.rules_too_manyAt most {max} argument rules
node.target_invalid{value} is not an address with a port, e.g. 127.0.0.1:9000
node.too_longToo long: at most {max}
node.topic_filter{value} is not a topic filter: + stands for a whole level, # only for the whole last one
node.topic_wildcardA publish topic cannot contain the wildcards + or #
node.url_invalid{value} is not an http:// or https:// URL

osc ​

CodeMessage
osc.packet_malformedMalformed OSC packet ({bytes} B)
osc.pattern_char“{char}” is not allowed here in an OSC address
osc.pattern_empty_segmentEmpty part between slashes
osc.pattern_empty_setEmpty [ ] set
osc.pattern_rangeThe range {range} runs backwards
osc.pattern_slashAn OSC address pattern starts with /
osc.pattern_too_longThe address pattern is longer than {max} characters
osc.pattern_unclosedUnclosed [ or {

param ​

CodeMessage
param.duplicateParameter {name} is defined twice
param.name_invalidParameter name “{name}” must start with a letter or _ and use only letters, digits and _
param.name_reserved“{name}” is reserved and cannot name a parameter
param.too_largeParameter {name} is larger than {max} KiB
param.unknownUnknown parameter {name}

params ​

CodeMessage
params.too_manyAt most {max} parameters

position ​

CodeMessage
positionposition {position}

profile ​

CodeMessage
profile.active_missingThe active profile {name} does not exist
profile.duplicateProfile {name} is defined twice
profile.name_invalidProfile names are 1–{max} characters
profile.unknown_paramProfile {profile} sets {name}, which is not a parameter
profile.values_too_manyProfile {profile} sets more than {max} values

profiles ​

CodeMessage
profiles.too_manyAt most {max} profiles

regex ​

CodeMessage
regex.invalid{pattern} is not a valid regular expression

run ​

CodeMessage
run.join_waitingJoin is still waiting for {count} branch(es) — a wire into it was never followed, for instance a branch that took another path
run.limit_rangeA run may take 1 to {max} seconds
run.no_endThe run stopped before reaching End
run.node_missingNode {id} is missing
run.not_a_checkThis node is not a check
run.not_a_waitThis node is not a wait
run.not_an_actionThis node does not send or listen
run.override_unknownRun with… sets {name}, which is not a parameter
run.timeoutThe run took longer than {seconds} s and was stopped

runs ​

CodeMessage
runs.name_invalid“{name}” is not a run's report
runs.not_foundNo run “{name}”: its report was removed

scan ​

CodeMessage
scan.host_requiredEnter the host to scan

secret ​

CodeMessage
secret.emptyA secret cannot be empty
secret.missingSecret {name} is not stored on this computer — set it under Parameters → Secrets
secret.name_invalidSecret name “{name}” must start with a letter or _, use only letters, digits and _, and be at most {max} characters
secret.read_onlySecrets are read-only here: set {name} on the server (SIGNALLAB_SECRET_{name}, or a file named {name} in its secrets folder)
secret.storeThe system credential store failed for {name}
secret.too_largeA secret is at most {max} KiB
secret.unsupportedSecrets are kept in the Windows Credential Manager, which this system does not have

seed ​

CodeMessage
seed.rangeThe seed must be 0–{max}

show ​

CodeMessage
showShow

signals ​

CodeMessage
signals.encodeThe signal library could not be written as JSON
signals.json_invalid{path} is not a valid signal library: JSON error at line {line}, column {column} — fix the file or remove it

socket ​

CodeMessage
socket.option_failedThe system did not accept the socket option {option}

template ​

CodeMessage
template.arg_emptyEmpty argument
template.arg_integer{function}: {value} is not a whole number
template.arg_invalidThe argument {value} must be quoted
template.arg_number{function}: {value} is not a number
template.arg_quoteUnclosed quote in the arguments
template.args_pickpick(…) needs at least one option
template.args_random_floatrandom_float(min, max[, digits]) takes 2 or 3 arguments
template.args_random_intrandom_int(min, max) takes 2 arguments
template.args_uuiduuid() takes no arguments
template.bad_call{text} is not a valid function call
template.bad_name{text} is not a valid name
template.bad_path{text}: invalid path — use .field, [0] or ["key"]
template.digitsrandom_float takes 0–{max} digits
template.emptyEmpty {{ }}
template.needs_name{head} needs a name: {head}.NAME
template.no_field{name} has no field {path}
template.node_fieldsnode has only node.id
template.now_fieldsnow has only now.iso
template.range{function}: min {min} must be below max {max}
template.run_fieldsrun has only run.id and run.seed
template.unclosedUnclosed {{
template.unknown_functionUnknown function {name}()

transport ​

CodeMessage
transport.address_in_use{target} is already in use by another program
transport.address_unavailable{target} is not an address of this computer
transport.deniedThe system or a firewall did not allow access to {target}
transport.dnsCannot resolve {target} — check the host name
transport.failedSending to {target} failed
transport.refused{target} refused the connection — nothing is listening on that port
transport.reset{target} closed the connection
transport.target_invalid{target} is not a valid address
transport.timeoutNo answer from {target} in time
transport.tlsA secure connection to {target} could not be made (certificate or TLS)
transport.unreachable{target} is unreachable — check the network and the address

unknown ​

CodeMessage
unknownUnexpected engine error ({code})

variable ​

CodeMessage
variable.name_invalidVariable name “{name}” must start with a letter or _ and use only letters, digits and _
variable.name_reserved“{name}” is reserved and cannot name a variable
variable.shadows_paramVariable {name} has the same name as a parameter

wait ​

CodeMessage
wait.bind_failedCannot listen on {target}
wait.not_listeningNot listening on {target}
wait.receive_failedListening on {target} stopped with an error
wait.timeoutNo matching message within {ms} ms ({unmatched} other messages arrived on {target})

ws ​

CodeMessage
ws.close_code{code} is not a close code a client sends — use 1000, or 3000–4999 for the application's own
ws.closedThe WebSocket connection is closed ({code})
ws.connection_after{id} does not come before this step — it opens the connection this step uses
ws.connection_unknown{id} is not a WebSocket connect node of this experiment
ws.handshake_failedThe WebSocket upgrade with {url} failed
ws.handshake_status{url} answered HTTP {status} instead of switching to WebSocket
ws.header_invalidThe header {name} cannot be sent with the upgrade
ws.message_too_largeA WebSocket message is limited to {max} bytes
ws.not_connectedNo open WebSocket connection {id}
ws.payload_requiredGive the message as text or as hex bytes
ws.protocol_errorThe connection with {url} broke: the server did not keep to the WebSocket protocol
ws.protocol_invalid{value} is not a subprotocol name: no spaces, commas or slashes
ws.subprotocol_refused{url} did not take any of the subprotocols offered
ws.url_invalid{url} is not a WebSocket address — use ws://host:port/path or wss://…

Fields ​

The names a message gives to the field it is about.

FieldName
addressAddress
argumentArgument
attemptsAttempts
authAuthentication
bindListen on
bodyBody
brokerBroker
burst_lengthBurst length
burst_startBurst loss
codeClose code
conditionCondition
conditionsConditions
connectionConnection
corruptCorruption
delay_msDelay
duplicateDuplication
duration_sDuration
emulatorEmulator
expectedExpected
expected_textExpected text
fallbackRequests no route takes
greetingGreeting
header_nameHeader name
header_valueHeader value
headersHeaders
hexHex bytes
hostHost
jitter_msJitter
json_pathJSON path
latency_msLatency
listenListen on
loadLoad
load_baseBase rate
load_concurrencyConcurrency
load_durationDuration
load_everyStep length
load_fromFrom
load_peakPeak rate
load_rateRate
load_spikeSpike
load_stepStep
load_stepsSteps
load_toTo
loop_maxIterations
lossPacket loss
max_msTime limit
messageMessage
methodMethod
msDuration
nameName
outage_downDown for
outage_upUp for
passwordPassword
pathPath
patternPattern
payloadPayload
portPort
profile_nameProfile name
protocolsSubprotocols
qosQoS
rateRate
rate_kbpsBandwidth
reasonReason
relayImpairment
reorderReordering
repeatRepeat
repeat_countNumber of sends
repeat_durationRepeat for
repeat_intervalInterval
repeat_jitterJitter
replyReply
reply_addressReply address
reply_argReply argument
reply_argsReply arguments
reply_bindReply on
reply_patternReply pattern
reply_payloadReply payload
reply_topicReply topic
resetConnection reset
responsesResponses
retainedRetained messages
retryRetry
retry_delayPause between attempts
ruleRule
rule_valueRule value
rulesRules
stallHalf-open
statusStatus
targetTarget
thresholdThreshold
thresholdsThresholds
timeout_msTimeout
toReply to
tokenToken
topicTopic
urlURL
usernameUser name
valueValue
variableVariable
weightWeight