Errors¶
Runtime errors¶
- access
-
Tried to read files above directory, run system commands or failed usr/pwd
- accp
-
Tried to accept an incoming TCP/IP connection but failed to do so
- adict
-
E.g.
d[::]:x
-
Blocked assignment (
'nyi
) - arch
-
E.g.
`:test set til 100 -17!`:test
Tried to load file of wrong endian format
- assign
-
E.g.
cos:12
Tried to redefine a reserved word
- bad lambda
-
E.g.
h{select x by x from x}
lambda from an older version of kdb+ over IPC that no longer parses
- badmsg
-
Failure in IPC validator
- bad meta data in file
-
The compressed file contains corrupt meta data. This can happen if the file was incomplete at the time of reading.
- badtail
-
Incomplete transaction at end of file, get good (count;length) with
-11!(-2;`:file)
- binary mismatch
-
Wrong process for code profiler
- can't
-
Only commercially licensed kdb+ instances can encrypt code in a script
- cast
-
E.g.
s:`a`b; c:`s$`a`e
Value not in enumeration
- close
-
(1) content-length header missing from HTTP response
(2) handle: n – handle was closed by the remote while a msg was expected
- con
-
qcon client is not supported when kdb+ is in multithreaded input mode
- cond
-
Even number of arguments to
$
(until V3.6 2018.12.06) - conn
-
Too many connections. Max connections was 1022 prior to 4.1t 2023.09.15, otherwise the limit imposed by the operating system (operating system configurable for system/protocol).
- Could not initialize ssl
-
(-26!)[]
found SSL/TLS not enabled - d8
-
The log had a partial transaction at the end but q couldn’t truncate the file
- decompression error at block [b] in
-
Error signalled by underlying decompression routine
- domain
-
E.g.
til -1
Out of domain
- dup
-
E.g.
`a`b xasc flip`a`b`a!()
Duplicate column in table (since V3.6 2019.02.19)
- dup names for cols/groups
-
E.g.
select a,a by a from t
Name collision (since V4.0 2020.03.17)
- elim
-
E.g.
((-58?`3) set\:(),`a)$`a
Too many enumerations (max: 57)
- empty
-
The paths listed in
par.txt
do not contain any partitions or are inaccessible. - enable secondary threads via cmd line -s only
-
E.g.
\s 4
Command line enabled processes for parallel processing
- encryption lib unavailable
-
E.g.
-36!(`:kf;"pwd")
Failed to load OpenSSL libraries
- expected response
-
One-shot request did not receive response
- failed to load TLS certificates
-
Started kdb+ with
-E 1
or-E 2
but without SSL/TLS enabled - from
-
E.g.
select price trade
Badly formed select query
- hop
-
Request to
hopen
a handle fails; includes message from OS - hwr
-
Handle write error, can’t write inside a
peach
- IJS
-
E.g.
"D=\001"0:"0=hello\0011=world"
Key type is not
I
,J
, orS
. - insert
-
E.g.
t:([k:0 1]a:2 3);`t insert(0;3)
Tried to
insert
a record with an existing key into a keyed table - invalid
-
E.g.
q -e 3
Invalid command-line option value
- invalid password
-
E.g.
-36!(`:kf;"pwd")
Invalid keyfile password
- \l
-
Not a data file
- length
-
E.g.
()+til 1
Arguments do not conform
- limit
-
E.g.
0W#2
Tried to generate a list longer than 240-1, or serialized object is > 1TB, or
'type
if trying to serialize a nested object which has > 2 billion elements, or Parse errors - load
-
Not a data file
- loop
-
E.g.
a::b::a
-
Dependency loop
- main thread only
-
E.g.
-36!(`:kf;"pwd")
-
Not executed from main thread
- mismatch
-
E.g.
([]a:til 4),([]b:til 3)
-
Columns that can’t be aligned for
R,R
orK,K
- mlim
-
Too many nested columns in splayed tables. (Prior to V3.0, limited to 999; from V3.0, 251; from V3.3, 65530)
- mq
-
Multi-threading not allowed
- name too long
-
Filepath ≥100 chars (until V3.6 2018.09.26)
- need zlib to compress
-
zlib not available
- noamend
-
E.g.
t:([]a:1 2 3) n:`a`b`c update b:{`n?`d;:`n?`d}[] from `t
-
Cannot change global state from within an amend
- no append to zipped enums
-
E.g.
`:sym?`c
-
Cannot append to zipped enum (from V3.0)
- no
`g#
-
E.g.
{`g#x}peach 2#enlist 0 1
-
A thread other than the main q thread has attempted to add a group attribute to a vector. Seen with
peach
+secondary threads or multithreaded input queue - noupdate
-
E.g.
{a::x}peach 0 1
-
Updates blocked by the
-b
cmd line arg, orreval
code or a thread other than the main thread has attempted to update a global variable when inpeach
+secondary threads or multithreaded input queue. Update not allowed when using negative port number. - nosocket
-
Can only open or use sockets in main thread.
- nyi
-
E.g.
"a"like"**"
-
Not yet implemented: it probably makes sense, but it’s not defined nor implemented, and needs more thinking about as the language evolves
- os
-
E.g.
\foo bar
-
Operating-system error or license error
- par
-
Unsupported operation on a partitioned table or component thereof
- parse
-
Invalid syntax; bad IPC header; or bad binary data in file
- part
-
Something wrong with the partitions in the HDB; or
med
applied over partitions or segments - path too long
-
E.g.
(`$":",1000#"a") set 1 2 3
-
File path ≥255 chars (100 before V3.6 2018.09.26)
- PKCS5_PBKDF2_HMAC
-
E.g.
-36!(`:kf;"pwd")
-
Library invocation failed
- pread
-
Issue reading a compressed file. This can happen if file corrupt or modified during read.
- pwuid
-
OS is missing libraries for
getpwuid
. (Most likely 32-bit app on 64-bit OS. Try to install ia32-libs.) -
or
-
UID (user id) not found in system database of users (e.g. running on container with randomized UID). To prevent this issue (since 4.1t 2023.05.26,4.0 2023.11.03) system environment variable HOME or USER can be set to home directory for the user.
- Q7
-
nyi op on file nested array
- rank
-
E.g.
+[2;3;4]
-
Invalid rank
- rb
-
Encountered a problem while doing a blocking read
- restricted
-
E.g.
0"2+3"
in a kdb+ process which was started with-b
cmd line. -
Also for a kdb+ process using the username:password authentication file, or the
-b
cmd line option,\x
cannot be used to reset handlers to their default. e.g.\x .z.pg
- s-fail
-
E.g.
`s#3 2
-
Invalid attempt to set sorted attribute. Also encountered with
`s#enums
when loading a database (\l db
) and enum target is not already loaded. - splay
-
nyi op on splayed table
- stack
-
E.g.
{.z.s[]}[]
-
Ran out of stack space. Consider using Converge
\
/
instead of recursion. - step
-
E.g.
d:`s#`a`b!1 2;`d upsert `c`d!3 4
Tried to upsert a step dictionary in place
- stop
-
User interrupt (Ctrl-c) or time limit (
-T
) - stype
-
E.g.
'42
- sys
-
E.g.
{system "ls"}peach 0 1
-
Using system call from thread other than main thread
- threadview
-
Trying to calc a view in a thread other than main thread. A view can be calculated in the main thread only. The cached result can be used from other threads.
- timeout
-
Request to
hopen
a handle fails on a timeout; includes message from OS - TLS not enabled
-
Received a TLS connection request, but kdb+ not started with
-E 1
or-E 2
- too many syms
-
kdb+ currently allows for about 1.4B interned symbols in the pool and will exit with this error when this threshold is reached
- trunc
-
The log had a partial transaction at the end but q couldn’t truncate the file
- type
-
E.g.
til 2.2
-
Wrong type. Also see
limit
- type/attr error amending file
-
Direct update on disk for this type or attribute is not allowed
- u-fail
-
E.g.
`u#2 2
-
Invalid attempt to set unique or parted attribute
- unmappable
-
E.g.
t:([]sym:`a`b;a:(();())) .Q.dpft[`:thdb;.z.d;`sym;`t]
-
When saving partitioned data each column must be mappable.
()
and("";"";"")
are OK - unrecognized key format
-
E.g.
-36!(`:kf;"pwd")
-
Master keyfile format not recognized
- upd
-
Function
upd
is undefined (sometimes encountered during-11!`:logfile
) or license error - utf8
-
The websocket requires that text is UTF-8 encoded
- value
-
No value
- vd1
-
Attempted multithread update
- view
-
Tried to re-assign a view to something else
- -w abort
- -w init via cmd line
-
Trying to allocate memory with
\w
without-w
on command line - wsfull
-
E.g.
999999999#0
-
malloc
failed, or ran out of swap (or addressability on 32-bit). The params also reported are intended to help KX diagnose when assisting clients, and are subject to change. - wsm
-
E.g.
010b wsum 010b
-
Alias for
nyi
forwsum
prior to V3.2 - XXX
-
E.g.
delete x from system "d";x
-
Value error (
XXX
undefined)
System errors¶
From file ops and IPC
error | explanation |
---|---|
Bad CPU Type | Tried to run 32-bit interpreter in macOS 10.15+ |
XXX:YYY |
XXX is from kdb+, YYY from the OS |
XXX
from addr, close, conn, p(from -p
), snd, rcv or (invalid) filename, e.g. read0`:invalidname.txt
Parse errors¶
On execute or load
error | example / explanation |
---|---|
[({])}" |
"hello Open ([{ or " |
branch | a:"1;",65024#"0;" value "{if[",a,"]}" A branch ( if ;do ;while ;$[.;.;.] ) more than 65025 byte codes away(255 before V3.6 2017.09.26) |
char | value "\000" Invalid character (watch out for non-breaking spaces in copied expressions) |
globals | a:"::a"sv string til 111; value"{a",a,"::0}" Too many global variables |
limit | a:";"sv string 2+til 241; value"{",a,"}" Too many constants, or limit error |
locals | a:":a"sv string til 111; value"{a",a,":0}" Too many local variables |
params | f:{[a;b;c;d;e;f;g;h;e]} Too many parameters (8 max) |
License errors¶
On launch
error | explanation |
---|---|
{timestamp} couldn't connect to license daemon | Could not connect to KX license server (kdb+ On Demand) |
cores | The license is for fewer cores than available |
cpu | The license is for fewer CPUs than available |
exp | License expiry date is prior to system date |
host | The hostname reported by the OS does not match the hostname or hostname-pattern in the license. If you see 255.255.255.255 in the kdb+ banner, the machine likely cannot resolve its hostname to an IP address, which will cause a host error.Since 4.1t 2022.07.01,4.0 2022.07.01 the detected hostname is printed. It can be used to compare with the hostname used within the license. |
k4.lic | k4.lic file not found, check contents of environment variables QHOME and QLIC |
os | Wrong OS or operating-system error (if runtime error) |
srv | Client-only license in server mode |
upd | Version of kdb+ more recent than update date, or the function upd is undefined (sometimes encountered during -11!`:logfile ) |
user | Unlicensed user |
wha | System date is prior to kdb+ version date |
wrong q.k version | q and q.k versions do not match |
License-related errors are reported with the prefix licence error:
since V4.0 2019.10.22.
Handling errors¶
Use system command \
(abort) to clear one level off the execution stack.
Keyword exit
terminates the kdb+ process.
Use hook .z.exit
to set a callback on process exit.
Use Signal to signal errors.
Use Trap and Trap At to trap errors.