Menu

libcxc / Blog: Recent posts

Released v5.0.0

  • Change: CXC_INIT() detects PID change and automatically initializes necessary structures/vars.
  • Change: Removed cxc_init_forked().
  • Change: Removed __cxc_snprintf() from public header.
  • Change: cxc_free_sec_buf(): arg changed to **pptr: buffer pointer is zeroed after the operation.
  • Change: __cxc_sighdl_hook() renamed to CXC_REG_SIG_HOOK()
  • Adedd: TEST: test_init_forked_throw(): test CXC_INIT() PID change detection in a forked process.
  • Update: rcode v3.0: ABI changed!
Posted by Tomasz Pawlak 2024-01-06

Released v4.7.0

  • Fixed: autotools build: missing symbol cxc_init_forked in linker script, compiled correctly from C::B project.
Posted by Tomasz Pawlak 2023-12-29

Released v4.6.0

  • Added: fall-back mode which uses full-barrier synchronization methods: sync_bool_compare_and_swap() and sync_synchronize(). This allows to use the library in older systems.
Posted by Tomasz Pawlak 2023-12-16

Released v4.5.0

  • Fixed: (BUG::regression::old) cxc_connect(): cxc_entry.ecd_rcd_scp and cxc_entry.xmk_rcd_scp were not initalized, unless CXC_THROW and CXC_MARK were invoked. This could cause a crash in cxc_backtrace().
  • Change: cxc_secured_buf(), cxc_free_sec_buf() are not setting internal cxc_status rcode: cxc_try_switch() should not be affected by external calls to those functions.
  • Change: CXC_THIS_SCOPE_PTR is now used also by CXC_TRY, CXC_THROW, CXC_MARK macros.
  • Added: cxc_clear_status(): clear internal status rcode... read more
Posted by Tomasz Pawlak 2023-10-15

Released v4.4.0

  • Fixed: cxc_stack.s_offs should be of type int32_t,
  • Fixed: TEST: test_td_stack_ovf(): gcc v12.2.0: silenced warning "-Winfinite-recursion",
  • Change: cxc_stack.rzb now holds the address of the cxc_stack for stronger validation.
  • Change: removed "[E!]" and "[w]" prefixes from rcode messages -> client app decides whether to use message prefixes.
Posted by Tomasz Pawlak 2023-09-04

Released v4.3.0

  • Fixed: cxc_rcdGetMsg_s(): in case when the scope ptr is NULL, use cxc_scope pointer. The behaviour is now consistent with code generated by rcd_autogen.
  • Added: CXC_INIT(): checking if the cxc_stack is already initialized -> error.
  • Added: cxc_initialized(): returns non-zero if cxc_stack is initialized.
Posted by Tomasz Pawlak 2023-04-17

Released v4.2.0

  • Update: rcd_autogen v2.9: Fixed: misuse of VMSG TLS pointer, race possible.
Posted by Tomasz Pawlak 2023-03-09

Released v4.1.0

  • Fixed: (BUG::old) cnv_str() internal buffer too small to print 64bit value in base 2.
  • Fixed: (BUG) ld script: missing symbol cxc_rcdGetMinMsgBufSz.
  • Fixed: cxc_secured_buf(): added error messages, setting global __cxc_status.
  • Change: cxc.h: missing CXC_THIS_SCOPE_PTR definition is now #error, not a warning.
  • Added: new constant CXF_TRY_PARENT_HDL for use with CXC_TRY(): use handler set for parent entry.
    Full list in change log.
Posted by Tomasz Pawlak 2023-03-05

Released v4.0.0

  • Fixed: (BUG::old) cxc_try_switch(): don't propagate the exception in case when invoked from CXC_RESTART(),
  • Fixed: (BUG) CXC_SIGQUEUE(): siginfo_t located on stack was not fully initialized,
  • Fixed: (BUG::regression::old) rcd_autoconf.m4: changing rcd_autogen run mode at configure time didn't work,
  • Change: Renamed cxc_entry accessors from cxc_get_xxx() to cxc_entry_get_xxx(),
  • Added: cxc_rcdGetMsg() needed to get messages from CXC_INIT(), CXC_REG_SIGNAL() and CXC_REG_SIG_MASK(), before CXC_TRY() section,
  • Update: rcd_autogen v2.7
    Full list in the change log.
Posted by Tomasz Pawlak 2023-01-04

Released v3.5.0

No functional changes.
Update: rcd_autogen v2.6 : fixed-size array of units, variable declaration.

Posted by Tomasz Pawlak 2021-04-29

Released v3.4.0

  • Fixed: makefile.am: don't install debug.h
  • Update: rcd_autogen v2.3
Posted by Tomasz Pawlak 2021-01-24

Released v3.3.0

  • Fixed: (BUG) cxc.h: undefined symbol CXC_THIS_SCOPE_PTR causes failure in autoconf tests in client apps.
  • Fixed: (BUG) makefile.am: conflicting 'rcodedir' and 'install-data-hook' -> 'make install' fails.
  • Fixed: cxc.h: removed redundant #defines
    Archive with v3.2.0 removed.
Posted by Tomasz Pawlak 2020-12-02

update

Some other projects are now released with rcd_autogen v2.1 - that version contains just few minor changes which are not affecting the resulting builds. The rcd_autogen released along with this project will be updated in next release.

Posted by Tomasz Pawlak 2020-11-29

Released v3.2.0

  • Update: new rcd_autogen v2.0 - got rid of rcd_autogen headers in lib interface.
  • Added: full integration with rcd_autogen message bindings
  • New public macro : CXC_CATCH_MSG(msg): the msg is attached to the cxc_backtrace() output.
    Full list in the changelog.
Posted by Tomasz Pawlak 2020-11-28

Released v3.1.0

  • Fixed: (BUG) cxc.h: incorrect include path to rcode.h
  • Fixed: (BUG) makefile.am: rcd_autogen in basic mode: src/cxc_rcd_func.c is required to
    include stub funcions in the final DSO.
  • Fixed: cxc_propagate() should propagate also the rcd_scope_t scope pointer.
  • Update: rcd_autogen v1.3 and rcode v1.0.3
    Archive with v3.0.0 has been removed.
Posted by Tomasz Pawlak 2019-10-06

Released v3.0.0

  • Fixed: (BUG): packed cxc_stack members were not correctly aligned for WORDSIZE==64
  • Fixed: new version of m4/build_switch.m4 - the previous version was incomplete and buggy.
  • Change: cxc_backtrace(), cxc_backtrace_buf(): in case of error the error message is printed to defined fd/buffer (if possible)
  • Added: new public function: cxc_get_sig_desc(): fully safe replacement for strsignal(), used in cxc_backtrce().
    The most important change hoowever, is upgrade to returncode v1.0.2. This version significantly increases functionality of the rcode, but requires special pre-build steps, which are performed using bash script: 'rcd_autogen'.
    Additionally, the m4/rcd_autoconf.m4 script is provided, to ease integration of 'rcd_autogen' with autoconf.
    The new rcode allowed to implement 3 new public macros:
    CXC_TRY_MSG(), CXC_MARK_MSG() and CXC_THROW_MSG().
    Now it's possible to connect rcode values with corresponding textual messages or comments, which are visible in the backtrace.
    Manpage and test program are updated.
    Besides that, lots of small changes and fixes have been introduced, see change log for details.
Posted by Tomasz Pawlak 2019-10-01

Released v2.0.0

Most important changes:
- Added support for POSIX real-time signals - the library itself is now using SIGRTMIN for thread crash detection and for CXC_THROW_MAIN()
- Change: removed support for FINALLY section: it was useless in practice.
- Lots of other small changes and fixes.
- Manpage updated.

Full list of changes in the change logs.

Tests performed on x86, amd64 and armhf (BCM2835) - all passed.

Posted by Tomasz Pawlak 2019-01-02

Released v1.13.0

  • Fixed: Incorrect license in the COPYING file.
  • Few small fixes in the code.
  • Updated returncode.h and debug.h
Posted by Tomasz Pawlak 2018-02-04

Released v1.12.0

Two bugs has been fixed, both non critical:
- returncode.h: old mislooked bug: RCD_RETURN_FALSE() returned RCD_TRUE! The only reason that this Bug have survived for a so long time is that true/false values of rcode was never used be me until now. Anyway, this has ZERO influence on the libcxc behaviour.
- locally aliased funcions: missing "hidden" attribute - discovered during investigating the asm code: now all the locally aliased functions are called without the use of PLT table -> faster.

Posted by Tomasz Pawlak 2017-11-27

Released v1.11.0

Yet another set of small fixes, to make this lib compatible with GNU's c99.

Posted by Tomasz Pawlak 2017-09-12

Released v1.10.0

This is mainly a maintenance release, which fixes some problems with a new gcc v6.x used in newer distros.
However, few minor changes are also applied: see changelog.

Posted by Tomasz Pawlak 2017-09-09

Released v1.9.0

This is mainly a bugfix release - the ARM build was broken since version 1.5.3 - fixed, tested.
Full list of changes in changelog.

Posted by Tomasz Pawlak 2016-10-20

Released v1.8.0

Lots of changes this time, most important is the licensing: now the lib is licensed under LGPLv3.
- internal data structures are now hidden behind the accessor functions. (it was very convenient to be able to modify everything, including CPU contextes, but it's time to freeze the interface)
- libtool versioning system -> a more flexible solution (provided that the interface is frozen).
- smaller client-side code.
Full list in the changelog.

Posted by Tomasz Pawlak 2016-09-21

Released v1.7.3

  • Stack smashing/corruption in a sub-thread is now handled internally by the cxc!
  • Added: Test program: test_stack_smashing() in thread 11.
  • Change: CX_RESTART(): Now restarting works also in CATCH or FINALLY sections for current-level TRY section.
  • Fixed: cx_sig_hdl(): CXF_TOP_HDL: should set the cx_entry->uval to siginfo->si_code. This is consistent with logic used for CXF_CATCH.
Posted by Tomasz Pawlak 2016-07-15

Released v1.7.2

  • Added: New flag for user signal handler: CXF_TOP_HDL, which causes jumping directly to the top-level catch section. When used in the top-level sig handler, the thread is terminated to prevent possible infinite looping. This is a complementation for CX_THROW_MAIN(), which allows to implement single top-level handler for selected signals/critical erros.
  • Added: Test program: test for CXF_TOP_HDL: test_jmp_top_handler().
  • Change: CX_THROW(): now the cx_throw() takes rcode as argument and sets it for the current entry. Saves a call to cx_get_entry() - faster.
  • Manpage updated.... read more
Posted by Tomasz Pawlak 2016-07-09