Commit Graph
1781 Commits
Author SHA1 Message Date
Sang Woo Kim ee673d87ec seqRecord: fix upper display limit of the DLYn fields
get_graphic_double() assigns lower_disp_limit twice and never writes
upper_disp_limit, so a DBR_GR_DOUBLE read of any DLYn field reports
the inverted range lower=10, upper=0.  The second assignment was
evidently meant for the upper limit; the 0 in the upper slot is the
zeroed buffer dbAccess.c hands to the RSET, not a chosen value.

Both assignments date from commit 27e80be2e5 which introduced the
DLYn limits, so every release since 3.14.11 reports the inverted
range over both CA (DBR_GR/CTRL) and PVA (display.limitLow/High).

Extend seqTest with a DBR_GR_DOUBLE read of DLY0; the new cases
fail with lower=10, upper=0 before this fix.
2026-10-14 11:18:58 +02:00
Jacqueline GarrahanandClaude Opus 4.8 91aba2cb0a dbJLink: fix assignment-instead-of-compare in dbJLinkMapAll
The guard used recname[0] = '\0' (assignment) instead of == , which wrote
a NUL into the caller's string, truncating it to "", and evaluated to 0
so recname was left non-NULL pointing at "".  Every record then failed
the name comparison and nothing was mapped.  Use ==, matching dbjlr.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-14 11:18:33 +02:00
Sang Woo Kim 2ec624aad6 selRecord: fix the precision reported for the A-L and LA-LL fields
get_precision() walks pvalue and plvalue over the A-L and LA-LL fields,
then compares paddr->pfield against &pvalue and &plvalue -- the
addresses of the two local pointer variables, not of the fields they
point at.  Those are stack addresses, so neither test has ever matched
and every A-L or LA-LL precision request falls through to
recGblGetPrec().  The line just above gets it right: prec->val is a
field and needs the &, whereas pvalue and plvalue are already pointers.

Both tests date from e87551df24, the commit that added the loop, and
have been dead ever since, so every release since R3.12 has this.  They
carried a (void *) cast until 6d85a36397 removed it, which is why the
compiler was never shown a double ** to complain about.  That the
fields were meant to be covered is not in doubt: this record's
get_graphic_double() and get_control_double() both name A-L and LA-LL.

This changes what those fields report.  recGblGetPrec() substitutes 15
for a DOUBLE precision outside 0 to 15, so today A-L and LA-LL answer
15 for a PREC of 17 while VAL answers 17.  They now answer PREC
unclamped, which is what VAL has always done.

Add selTest, reading the precision of VAL, A, L, LA, LL and HIHI from a
record with PREC=17.  The four A-L and LA-LL cases report 15 before
this fix; VAL and HIHI pin the two paths either side of them.
2026-10-14 11:18:16 +02:00
Michael Davidsaver fe59acb15f rsrv: USE_TYPED_DBEVENT 2026-10-14 11:17:44 +02:00
Jacqueline GarrahanandClaude Opus 4.8 5107e2de49 errlog: fix out-of-bounds read when resizing the print buffer
errlogBufResize copied the print buffer from &pvt.print->base (the
address of the char* field inside the buffer_t struct) instead of
pvt.print->base (the buffer it points to), reading bufSize bytes from an
~8-byte struct field.  Drop the stray & so it reads the actual buffer,
matching the adjacent log-buffer copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-14 11:17:17 +02:00
Andrew Johnson 906abc98d7 Release notes, add a drvet to the example template 2026-10-14 11:17:11 +02:00
Andrew Johnson f73f888df8 Move -DUSE_TYPED_DRVET to USR_CPPFLAGS
Also fixes an issue in the generated registerRecordDeviceDriver code.
2026-10-14 11:17:01 +02:00
Érico Nogueira 5b29ce506e Fix UAF in caRepeaterThread
The ca_repeater function has some failure cases which can cause it to
return. In such a situation, a reference to the current thread's
epicsThreadId is kept in the taskwd, causing an eventual use-after-free
when the taskwd tries to determine the task's status.

We fix this problem by removing the thread from the taskwd if
ca_repeater ever returns.
2026-10-14 11:16:34 +02:00
Michael Davidsaver 2f460bdf26 rsrv: log_header paddr=
Currently prints dbChannel**
2026-10-14 11:16:22 +02:00
Michael Davidsaver c7e9310439 minor 2026-10-14 11:16:10 +02:00
Michael Davidsaver bb5b1b5c7b fix last LOCAL 2026-10-14 11:16:03 +02:00
Jeremy Lorelli 5b962a702b database: Replace epicsEventMustSignal -> epicsEventMustTrigger in comments 2026-10-14 11:15:56 +02:00
Michael Davidsaver 84c56e99b5 doc devSup.h 2026-10-14 11:15:36 +02:00
Michael Davidsaver 1dc953a672 Document dbScan.h 2026-10-14 11:15:24 +02:00
Michael Davidsaver 50c0fcc725 dbScan one more NUM_TIME_EVENTS 2026-10-14 11:15:03 +02:00
Michael Davidsaver 884e001f6e minor 2026-10-14 11:14:51 +02:00
mdavidsaver a6c4933742 Embed GDB helper
* Add GDB helper script

Pretty printing of some common argument types

Need to add a line to ~/.gdbinit

> add-auto-load-safe-path /path/to/base/checkout/

afterwards verify at GDB shell with

> info auto-load python-scripts
> info pretty-printer

Tested with GDB 16.3 circa Debian 13

Add $rcast(dbCommon) to up-cast
Add $record("name") to lookup record
Add $elln(ELLLIST,#) to index into list
2026-10-14 11:14:32 +02:00
rhong 2fdfb4cde0 Slow search_reply_udp in RTEMS IOCs (#836)
* Use malloc_free_space() instead of malloc_info( &info ) in osiSufficentSpaceInPool
2026-10-14 11:09:29 +02:00
Abdalla Al-Dalleh f4ea5cc1e9 biRecord.c/boRecord.c: Fix gcc -Wsizeof-pointer-memaccess (#887)
../rec/biRecord.c:191:42: warning: argument to ‘sizeof’ in ‘strncpy’
call is the same expression as the source; did you mean to use the
size of the destination? [-Wsizeof-pointer-memaccess]
  191 |         strncpy(pstring,prec->znam,sizeof(prec->znam));
      |                                          ^

Use memcpy instead of snprintf.

STATIC_ASSERT is added to ensure znam and onam are sized enough.
2026-10-14 11:00:22 +02:00
Michael Davidsaver e564d85e62 asDump* quote UAG and HAG entries 2026-10-14 10:57:27 +02:00
Torsten Bögershausen 88a2b165ae dbAccess.c: Improve logging of illegal field_type
Debugging a problem and looking at the message

recGblDbaddrError: dbPut: Request type is 0 Illegal Database Request Type...
does not help very much: request type 0 is a legal value.

Improve the message to show the field type as well:
recGblDbaddrError: dbPut: dbrType = 0 field_type = DBF_INLIK (14)...

Do the same for both dbPut and dbGet.
2026-10-14 10:57:09 +02:00
Simon Rose 9972f8ab3a Refactor tests and add test that errlogInit() can be run more than once 2026-10-13 10:25:21 +02:00
Simon Rose 8e56569e41 Add error/warning ANSI prefixes to error/warning messages 2026-10-13 10:25:09 +02:00
Simon Rose 90c287fbaa Add unrelease for errloginit2 change 2026-10-13 10:24:53 +02:00
Simon Rose ca424832a7 Block resizes from listener callbacks 2026-10-13 10:24:41 +02:00
Simon Rose 2bb445a992 Lock buffer size changes while running thread 2026-10-13 10:24:24 +02:00
Simon Rose 9668255042 Call errlogClampConfig only a single time 2026-10-13 10:24:12 +02:00
Simon Rose 8999ee7a0b Move frees out of mutex lock 2026-10-13 10:23:57 +02:00
Simon Rose 2c12fdec86 Stop flushing the errorlog during init 2026-10-13 10:23:29 +02:00
Simon Rose b16f8cfd8d Change initial errlogprintfs to printfs
RTEMS performs a few early errlogPrintf calls. This initialises
the errlog buffers to some default values blocking certain tests
from re-initialising the error log later.
2026-10-13 10:23:16 +02:00
Simon Rose 9cdd14d47d Remove errlogBufResize in favour of allowing errlogInit[2] to be called repeatedly 2026-10-13 10:22:47 +02:00
Simon Rose 63b22565fc Add warning if errorlog configuration has been clamped 2026-10-13 10:22:36 +02:00
Simon Rose b86265e682 Make the maximum message size dependent on the buffer size 2026-10-13 10:22:25 +02:00
Simon Rose 0e0a815e7c Update the error log functionality to avoid losing writes 2026-10-13 10:22:15 +02:00
Simon Rose 9b835a1fdb Add command to show errlog buffer contents 2026-10-13 10:21:59 +02:00
Simon Rose d3ff8dca3f Add commandline utility to resize buffer after being initialised 2026-10-13 10:21:35 +02:00
Simon Rose 53a3e4b694 Modify errorlog initialisation to add separate default value 2026-10-13 10:20:50 +02:00
Michael Davidsaver 68ff68cb31 epicsStrPrintEscaped() operate on unterminated string
see 3a2d225682
see f488765631
2026-10-13 10:18:56 +02:00
Michael Davidsaver 70070d8276 doc dbBase.h
document dbBase list node types
2026-10-13 10:18:22 +02:00
Andrew Johnson c2726b87d2 Error message fixes/improvements 2026-10-13 10:17:37 +02:00
Michael Davidsaver 267b56d495 doc 2026-10-13 10:17:03 +02:00
Michael Davidsaver 12e75c541c doc dbProcess() 2026-10-13 10:16:51 +02:00
zimoch d6df659acf Merge commit '631c8831b942ee5533a2f7016085dcef52c2f3ba' into PSI-7.0
Merge latest 7.0 until before records are modified
2026-10-13 10:15:50 +02:00
Michael Davidsaver cf7ab0f65e dbCa: iocInit wait for all conditions
After connectCallback, need to wait for up to three
concurrent actions.  Native and string subscriptions,
as well as GET of metadata.

Complicated because event_handler_args does not identify
the evid.

see 717d69e1fc
2026-10-13 09:42:17 +02:00
zimoch d1abe3d42e update submodules 2026-10-05 16:45:57 +02:00
zimoch 15ba5ed863 Merge branch '7.0' into PSI-7.0 2026-09-28 09:39:12 +02:00
zimoch 3b04f8176a add pvxs for architectures that support libevent natively 2026-09-28 09:05:57 +02:00
zimoch a61ed8eab3 update pvData 2026-09-28 09:05:56 +02:00
Freddie Akeroyd 631c8831b9 Fix number of tests 2026-04-01 08:37:29 -07:00
Freddie Akeroyd acf53d31ee Add test case 2026-04-01 08:37:29 -07:00