Re: [Owfs-developers] [GIT PULL] Fix race conditions in ow_regcomp

2017-11-12 Thread Justin Brewer
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

2017-11-11 Thread Justin Brewer
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

2017-11-08 Thread Justin Brewer
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

2017-11-08 Thread Justin Brewer
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

2017-11-08 Thread Justin Brewer
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 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.

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