Re: [Owfs-developers] [GIT PULL] Fix race conditions in ow_regcomp
Thanks for the review. On Sun, Nov 12, 2017 at 04:19:00PM +0100, Johan Ström wrote: > Looks good to me, much cleaner indeed! Given that pthread_once is available > everywhere? pthread_once is part of standard POSIX thread support, so any libc implementing pthreads should include it. All the supported platforms/libc's on the owfs porting page do. -- Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ___ Owfs-developers mailing list Owfs-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers
[Owfs-developers] [GIT PULL] Fix race conditions in ow_regcomp
I have been experiencing crashes, or other random failures, while developing an application using libowcapi. Backtracing shows that these issues occur during ow_regcomp. Ultimately, the cause is the tsearch algorithm being misused for performing lazy initialization, resulting in race conditions. This pull request replaces this algorithm with pthread_once, which was specifically designed for this use case. Also included is a small gitignore fix and a follow-on patch that may or may not be necessary, but was included for POSIX compliance. The following changes since commit c4911a3a825b24727d923874a843fb804c3379db: LINK: unbreak non-ftdi access mode (2017-09-12 19:29:21 +0200) are available in the Git repository at: https://gitlab.com/justinbrewer/owfs.git regex-init for you to fetch changes up to dd39e5e8d9aefd4aa50ef77b9954500bef464b1d: Free regexes at exit (2017-11-08 13:34:21 -0600) Justin Brewer (3): Ignore man3/IBLSS.3 Fix race conditions in ow_regcomp Free regexes at exit module/owlib/src/c/ow_arg.c | 41 +++--- module/owlib/src/c/ow_lib_stop.c | 3 - module/owlib/src/c/ow_parse_address.c | 62 +- module/owlib/src/c/ow_parse_sn.c | 20 - module/owlib/src/c/ow_parsename.c | 148 +++--- module/owlib/src/c/ow_regex.c | 113 ++ module/owlib/src/include/ow_regex.h | 2 - src/man/.gitignore| 1 + 8 files changed, 178 insertions(+), 212 deletions(-) -- Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ___ Owfs-developers mailing list Owfs-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers
Re: [Owfs-developers] owserver and owcapi behave differently with —enet device
Sorry for the multiple replies. I thought my messages weren't going out, but really there's just a 1h+ delay... On 11/08/2017 06:37 PM, Justin Brewer wrote: ...snip... -- Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ___ Owfs-developers mailing list Owfs-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers
Re: [Owfs-developers] owserver and owcapi behave differently with —enet device
On Wed, Nov 08, 2017 at 01:51:49PM -0800, Andrew Brownsword wrote: > Nothing but crickets — is anyone out there? > > I’ve been poking at the code to try and figure out how to enable my debugger > to step into the libowcapi/libow code, but the make process is obscure enough > that some advice would be welcome... If you're working from a clean git clone, I use this for working with just owcapi: $ autoreconf -i $ ./configure CFLAGS='-g -O0' --prefix=$HOME/opt/owfs --disable-{zero,ow{perl,python,php,tcl}} $ make $ make -k install This lets me ignore most of the language binding dependencies, and ignore some hardcoded install paths. > > > Sent from my iPhone > > > On Oct 31, 2017, at 3:11 PM, Andrew Brownsword > >wrote: > > > > Hello, > > > > I have an EDS ETH-OWSERVER v2, and I am trying to talk to it using the > > owcapi library. The init with arts function returns success but when I try > > to OW_get, I don’t see any buses or sensors (just the meta directories). > > If I run owserver, it sees the enet device and it’s 3 buses and 22 sensors > > just fine. I ran a simple owcapi test program and it sees one bus and zero > > sensors. > > > > My program is multi-threaded and the OW_get will be called from a different > > thread than the init (but correctly ordered). As for the test program, it > > is just the init and then a get of root. > > > > I’m using the latest release and running on either an Ubuntu ARM host or on > > OSX... same behavior either way. I have been working on some issues I've found in libow, and have seen similair symptoms. There's some race conditions that, if it doesn't outright crash, causes random failures elsewhere. I have a patch that resolves these issues here: https://gitlab.com/justinbrewer/owfs/commit/0234a2cecb56d0b6ca4d20a6100a2d2b2ba6bffb.patch I was planning on submitting a pull request in the next day or so, but I think this patch help you. -- Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ___ Owfs-developers mailing list Owfs-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers
Re: [Owfs-developers] owserver and owcapi behave differently with —enet device
I have been working with libowcapi recently, and have seen similair symptoms. There's a race condition in libow that, if it doesn't outright crash, causes problems with directory listings. I have a patch for this issue here: https://gitlab.com/justinbrewer/owfs/commit/0234a2cecb56d0b6ca4d20a6100a2d2b2ba6bffb.patch I was planning on submitting a pull request in the next day or so, but it sounds like it might help you. As for building, from a clean git clone, I use this for working with just owcapi: $ autoreconf -i && ./configure CFLAGS='-g -O0' --prefix=$HOME/opt/owfs --disable-{zero,ow{perl,python,php,tcl}} && make && make -k install This lets me ignore most of the problematic language binding dependencies and hardcoded install paths. On 11/08/2017 03:51 PM, Andrew Brownsword wrote: Nothing but crickets — is anyone out there? I’ve been poking at the code to try and figure out how to enable my debugger to step into the libowcapi/libow code, but the make process is obscure enough that some advice would be welcome... Sent from my iPhone On Oct 31, 2017, at 3:11 PM, Andrew Brownswordwrote: Hello, I have an EDS ETH-OWSERVER v2, and I am trying to talk to it using the owcapi library. The init with arts function returns success but when I try to OW_get, I don’t see any buses or sensors (just the meta directories). If I run owserver, it sees the enet device and it’s 3 buses and 22 sensors just fine. I ran a simple owcapi test program and it sees one bus and zero sensors. My program is multi-threaded and the OW_get will be called from a different thread than the init (but correctly ordered). As for the test program, it is just the init and then a get of root. I’m using the latest release and running on either an Ubuntu ARM host or on OSX... same behavior either way. And no, I don’t want to rely on owserver. Any suggestions? -- Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org!http://sdm.link/slashdot ___ Owfs-developers mailing list Owfs-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers -- Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ___ Owfs-developers mailing list Owfs-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers