[sane-devel] segfault in sane_net_get_devicesconnectingto network saned

Brian J. Murrell brian at interlinx.bc.ca
Tue May 11 18:42:21 UTC 2010


m. allan noah <kitno455 <at> gmail.com> writes:
> 

Hi,

> Ok- let me first appologize if you took Julien the wrong way. You see,
> any program that uses sane-backends is effectively pulling the
> backends into it's running process, giving it all manner of options to
> screw things up.

Yes, understood, completely.

> In the absence of source code, it can be very
> difficult to identify the culprit.

Indeed, and I do sympathize.  I really do wish I did not have a binary driver 
scanner, but I guess we all have to deal with our lot.

> As such, it is very frustrating for
> those of us that provide this free support to you, to hear complaints
> about cost of such code. You just accidentally hit a nerve, i think :)

OK.  I am happy to consider it all water under the bridge and move on.

> 1. can you enable the test backend on the server, and disable the
> brother backend in /etc/sane.d/dll.conf?

To be sure it's completely disabled, I even moved the library modules out of
the way.

> lets see if that at least
> shows up with scanimage -L on localhost and on the client.

$ scanimage -L
device `test:0' is a Noname frontend-tester virtual device
device `test:1' is a Noname frontend-tester virtual device
device `net:localhost:test:0' is a Noname frontend-tester virtual device
device `net:localhost:test:1' is a Noname frontend-tester virtual device

xsane scans from the local and network connected "test:0" devices just fine.
 
> 2. can you run saned with the -d flag, and see what is going on when
> brother is enabled?

OK.  So this is pretty good.  I run "sudo /usr/sbin/saned -d -a saned" on a tty 
and then "scanimage -L" on another tty and get:

device `brother3:bus1;dev1' is a Brother DCP-7040 USB scanner
device `test:0' is a Noname frontend-tester virtual device
device `test:1' is a Noname frontend-tester virtual device
device `net:localhost:brother3:bus1;dev1' is a Brother DCP-7040 USB scanner
device `net:localhost:test:0' is a Noname frontend-tester virtual device
device `net:localhost:test:1' is a Noname frontend-tester virtual device

Which is much better than any result I got with saned running as a daemon.  
xsane also comes up with the list of scanners which it didn't before.  So if we 
step backwards to get to where things break...

Disabling the test scanner still doesn't yield the segfault:

$ scanimage -L
device `brother3:bus1;dev1' is a Brother DCP-7040 USB scanner
device `net:localhost:brother3:bus1;dev1' is a Brother DCP-7040 USB scanner

Ah ha!  But restarting saned as a daemon (i.e. service saned start) yields the 
segfault again.

So...

$ sudo /usr/sbin/saned -a saned

segfaults scanimage

$ sudo /usr/sbin/saned -d -a saned

doesn't segfault scanimage

Perhaps the problem will be immediately obvious for you, perhaps not.  Happy to 
gather more info if not.

Cheers,
b.





More information about the sane-devel mailing list