kopia lustrzana https://gitlab.com/sane-project/website
323 wiersze
14 KiB
HTML
323 wiersze
14 KiB
HTML
<!-- received="Tue Apr 27 18:37:14 1999 PDT" -->
|
|
<!-- sent="Wed, 28 Apr 1999 11:40:16 +1000 (EST)" -->
|
|
<!-- name="Graham Stoney" -->
|
|
<!-- email="greyham@research.canon.com.au" -->
|
|
<!-- subject="Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)" -->
|
|
<!-- id="199904280140.LAA09898@sid.research.canon.com.au" -->
|
|
<!-- inreplyto="199904201640.SAA02091@lee.Cc.Uit.No" -->
|
|
<title>sane-devel: Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)</title>
|
|
<h1>Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)</h1>
|
|
<b>Graham Stoney</b> (<a href="mailto:greyham@research.canon.com.au"><i>greyham@research.canon.com.au</i></a>)<br>
|
|
<i>Wed, 28 Apr 1999 11:40:16 +1000 (EST)</i>
|
|
<p>
|
|
<ul>
|
|
<li> <b>Messages sorted by:</b> <a href="date.html#398">[ date ]</a><a href="index.html#398">[ thread ]</a><a href="subject.html#398">[ subject ]</a><a href="author.html#398">[ author ]</a>
|
|
<!-- next="start" -->
|
|
<li> <b>Next message:</b> <a href="0399.html">abel deuring: "Re: HP PhotoSmart R030 vs. SANE 1.01"</a>
|
|
<li> <b>Previous message:</b> <a href="0397.html">henk van der knaap: "Re: HEEEELP!!!!!!!!!!!"</a>
|
|
<li> <b>In reply to:</b> <a href="0271.html">Petter Reinholdtsen: "Sane 1.01pre5 segfaults in RedHat 5.1 (net)"</a>
|
|
<!-- nextthread="start" -->
|
|
<li> <b>Next in thread:</b> <a href="0412.html">Milon Firikis: "Re: Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)"</a>
|
|
<li> <b>Reply:</b> <a href="0412.html">Milon Firikis: "Re: Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)"</a>
|
|
<!-- reply="end" -->
|
|
</ul>
|
|
<!-- body="start" -->
|
|
[Milon Firikis]<br>
|
|
<i>> I keep getting SIGSEGVs in redhat 5.1</i><br>
|
|
<i>> </i><br>
|
|
<i>> I have reported it some time ago... but I am not qualified to find</i><br>
|
|
<i>> the solution...</i><br>
|
|
<p>
|
|
I've just tried using the net backend on redhat 5.1, and also got SIGSEGVs.<br>
|
|
It looks like I'm qualified to offer the fix below, but I don't know for sure<br>
|
|
whether it fixes Milon's problem. If it does, his SIGSEGV is likely to turn<br>
|
|
into an error message, though it may not mean that scanning actually works.<br>
|
|
<p>
|
|
My problem was that my backend was not setting the type field for option<br>
|
|
descriptor zero, causing sanei_w_call to fail with wire.status == EINVAL<br>
|
|
because it didn't know how to encode the descriptor's value. In sane-1.0.1,<br>
|
|
backend/net.c:sane_control_option fails to check whether<br>
|
|
sanei_w_call(...,SANE_NET_CONTROL_OPTION,...) succeeds before using the reply<br>
|
|
info. If it fails, we get a segfault. Perhaps something in Milon's config is<br>
|
|
causing this call to fail, but as far as I can see it will cause disaster on<br>
|
|
any system when the sanei_w_call in sane_control_option fails. The first<br>
|
|
patch below adds the missing test, and fixes the segfault.<br>
|
|
<p>
|
|
While looking at the existing backends, I noticed that very few of them set<br>
|
|
the "type" field on option descriptor zero correctly. Most rely on a memset<br>
|
|
of all the option descriptors to set it to zero, giving it a value of<br>
|
|
SANE_TYPE_BOOL. It's meant to be a SANE_TYPE_INT however; we're just lucky<br>
|
|
that the encoding for BOOL and INT is the same, so it works. The remaining<br>
|
|
patches explicitly set the type for the first descriptor to SANE_TYPE_INT in<br>
|
|
all the backends that appear (to my untrained eye) to get it wrong.<br>
|
|
<p>
|
|
Regards,<br>
|
|
Graham<br>
|
|
<p>
|
|
<p>
|
|
Index: backend/net.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/net.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 net.c<br>
|
|
*** net.c 1999/04/27 05:38:03 1.1.1.1<br>
|
|
--- net.c 1999/04/27 07:51:36<br>
|
|
***************<br>
|
|
*** 704,709 ****<br>
|
|
--- 704,716 ----<br>
|
|
sanei_w_call (&s->hw->wire, SANE_NET_CONTROL_OPTION,<br>
|
|
(WireCodecFunc) sanei_w_control_option_req, &req,<br>
|
|
(WireCodecFunc) sanei_w_control_option_reply, &reply);<br>
|
|
+ if (s->hw->wire.status != 0)<br>
|
|
+ {<br>
|
|
+ DBG(1, "control_option rpc call failed (%s)\n",<br>
|
|
+ strerror (s->hw->wire.status));<br>
|
|
+ return SANE_STATUS_IO_ERROR;<br>
|
|
+ }<br>
|
|
+ <br>
|
|
status = reply.status;<br>
|
|
need_auth = (reply.resource_to_authorize != 0);<br>
|
|
if (need_auth)<br>
|
|
<p>
|
|
<p>
|
|
Index: backend/abaton.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/abaton.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 abaton.c<br>
|
|
*** abaton.c 1999/04/27 05:38:09 1.1.1.1<br>
|
|
--- abaton.c 1999/04/28 01:17:32<br>
|
|
***************<br>
|
|
*** 644,649 ****<br>
|
|
--- 644,650 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/agfafocus.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/agfafocus.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 agfafocus.c<br>
|
|
*** agfafocus.c 1999/04/27 05:38:12 1.1.1.1<br>
|
|
--- agfafocus.c 1999/04/28 01:17:46<br>
|
|
***************<br>
|
|
*** 1007,1012 ****<br>
|
|
--- 1007,1013 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/apple.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/apple.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 apple.c<br>
|
|
*** apple.c 1999/04/27 05:38:07 1.1.1.1<br>
|
|
--- apple.c 1999/04/28 01:17:56<br>
|
|
***************<br>
|
|
*** 1286,1291 ****<br>
|
|
--- 1286,1292 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/artec.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/artec.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 artec.c<br>
|
|
*** artec.c 1999/04/27 05:38:06 1.1.1.1<br>
|
|
--- artec.c 1999/04/28 01:18:06<br>
|
|
***************<br>
|
|
*** 1378,1383 ****<br>
|
|
--- 1378,1384 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/canon.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/canon.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 canon.c<br>
|
|
*** canon.c 1999/04/27 05:38:06 1.1.1.1<br>
|
|
--- canon.c 1999/04/28 01:18:41<br>
|
|
***************<br>
|
|
*** 1150,1155 ****<br>
|
|
--- 1150,1156 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/coolscan.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/coolscan.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 coolscan.c<br>
|
|
*** coolscan.c 1999/04/27 05:38:07 1.1.1.1<br>
|
|
--- coolscan.c 1999/04/28 01:18:52<br>
|
|
***************<br>
|
|
*** 1542,1547 ****<br>
|
|
--- 1542,1548 ----<br>
|
|
<br>
|
|
scanner->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
scanner->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ scanner->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
scanner->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
<br>
|
|
/* "Mode" group: */<br>
|
|
Index: backend/epson.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/epson.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 epson.c<br>
|
|
*** epson.c 1999/04/27 05:38:06 1.1.1.1<br>
|
|
--- epson.c 1999/04/28 01:19:36<br>
|
|
***************<br>
|
|
*** 1022,1027 ****<br>
|
|
--- 1022,1028 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS] = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/pint.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/pint.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 pint.c<br>
|
|
*** pint.c 1999/04/27 05:38:05 1.1.1.1<br>
|
|
--- pint.c 1999/04/28 01:20:19<br>
|
|
***************<br>
|
|
*** 387,392 ****<br>
|
|
--- 387,393 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/ricoh.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/ricoh.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 ricoh.c<br>
|
|
*** ricoh.c 1999/04/27 05:38:12 1.1.1.1<br>
|
|
--- ricoh.c 1999/04/28 01:20:43<br>
|
|
***************<br>
|
|
*** 319,324 ****<br>
|
|
--- 319,325 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/s9036.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/s9036.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 s9036.c<br>
|
|
*** s9036.c 1999/04/27 05:38:06 1.1.1.1<br>
|
|
--- s9036.c 1999/04/28 01:20:53<br>
|
|
***************<br>
|
|
*** 675,680 ****<br>
|
|
--- 675,681 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS] = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/sharp.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/sharp.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 sharp.c<br>
|
|
*** sharp.c 1999/04/27 05:38:08 1.1.1.1<br>
|
|
--- sharp.c 1999/04/28 01:22:36<br>
|
|
***************<br>
|
|
*** 688,693 ****<br>
|
|
--- 688,694 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/tamarack.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/tamarack.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 tamarack.c<br>
|
|
*** tamarack.c 1999/04/27 05:38:07 1.1.1.1<br>
|
|
--- tamarack.c 1999/04/28 01:21:21<br>
|
|
***************<br>
|
|
*** 592,597 ****<br>
|
|
--- 592,598 ----<br>
|
|
<br>
|
|
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
Index: backend/umax.c<br>
|
|
===================================================================<br>
|
|
RCS file: /home/elph/archive/sane/backend/umax.c,v<br>
|
|
retrieving revision 1.1.1.1<br>
|
|
diff -c -r1.1.1.1 umax.c<br>
|
|
*** umax.c 1999/04/27 05:38:03 1.1.1.1<br>
|
|
--- umax.c 1999/04/28 01:21:36<br>
|
|
***************<br>
|
|
*** 3304,3309 ****<br>
|
|
--- 3304,3310 ----<br>
|
|
<br>
|
|
scanner->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;<br>
|
|
scanner->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;<br>
|
|
+ scanner->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;<br>
|
|
scanner->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;<br>
|
|
scanner->val[OPT_NUM_OPTS].w = NUM_OPTIONS;<br>
|
|
<br>
|
|
End of patch<br>
|
|
<p>
|
|
<pre>
|
|
--
|
|
Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a>
|
|
To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a>
|
|
</pre>
|
|
<!-- body="end" -->
|
|
<p>
|
|
<ul>
|
|
<!-- next="start" -->
|
|
<li> <b>Next message:</b> <a href="0399.html">abel deuring: "Re: HP PhotoSmart R030 vs. SANE 1.01"</a>
|
|
<li> <b>Previous message:</b> <a href="0397.html">henk van der knaap: "Re: HEEEELP!!!!!!!!!!!"</a>
|
|
<li> <b>In reply to:</b> <a href="0271.html">Petter Reinholdtsen: "Sane 1.01pre5 segfaults in RedHat 5.1 (net)"</a>
|
|
<!-- nextthread="start" -->
|
|
<li> <b>Next in thread:</b> <a href="0412.html">Milon Firikis: "Re: Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)"</a>
|
|
<li> <b>Reply:</b> <a href="0412.html">Milon Firikis: "Re: Possible fix for Sane 1.0.1 segfault in RedHat 5.1 (net)"</a>
|
|
<!-- reply="end" -->
|
|
</ul>
|