Priya Krishnan
2009-Apr-24 14:55 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
/I have instrumented a sizable number of COMSTAR iscsi Target probes (work in progress) and I run the following D script to print the payload bytes by command type (a D script currently used with the user-land iscsitgtd provider) //////dtrace -n ''iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }'' / /But I get an error message "dtrace: invalid probe specifier iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }: in action list: args[ ] may not be referenced because probe description iscsi*::: matches an unstable set of probes" Reading through one of the posts, I see a reply to the same problem posted earlier.. "if an enabling is associated with multiple probes //(in this particular case there are apparently several probes in //different //locations that match) the args[] array can''t work since different //probes //might have different arguments. The argN variable are always available. ////We''ve done some work towards addressing this issue, but there''s more //work to be done." Is this still true? or is there a way around this? All the probes have the same args[0] and args[1]. Any help is greatly appreciated thanks Priya / -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090424/20411550/attachment.html>
Jonathan Adams
2009-Apr-24 15:16 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On Fri, Apr 24, 2009 at 10:55:21AM -0400, Priya Krishnan wrote:> /I have instrumented a sizable number of COMSTAR iscsi Target probes (work > in progress) and I run the following D script to print the payload bytes by > command type (a D script currently > used with the user-land iscsitgtd provider) > > //////dtrace -n ''iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }'' > / > /But I get an error message > "dtrace: invalid probe specifier iscsi*::: { @[probename] = > sum(args[1]->ii_datalen); }: in action list: args[ ] may not be referenced > because probe description iscsi*::: matches an unstable set of probes"Does it work if you just do: dtrace -n ''iscsi1234::: { @[probename] = sum(args[1]->ii_datalen); }'' ? If so, you can do: pids=`pgrep -x name_of_iscsi_process | awk ''{print "iscsi" $1 ":::" }''` script=`echo $pids | sed ''s/ /,/g''` dtrace -n "$script"''{ @[probename] = sum(args[1]->ii_datalen); }'' Cheers, - jonathan> Reading through one of the posts, I see a reply to the same problem posted > earlier.. > > "if an enabling is associated with multiple probes //(in this particular > case there are apparently several probes in //different //locations that > match) the args[] array can''t work since different //probes //might have > different arguments. > The argN variable are always available. ////We''ve done some work towards > addressing this issue, but there''s more > //work to be done." > > Is this still true? or is there a way around this? All the probes have the > same args[0] and args[1]. > Any help is greatly appreciatedYou can
Priya Krishnan
2009-Apr-24 15:23 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On 04/24/09 11:16, Jonathan Adams wrote:> On Fri, Apr 24, 2009 at 10:55:21AM -0400, Priya Krishnan wrote: > >> /I have instrumented a sizable number of COMSTAR iscsi Target probes (work >> in progress) and I run the following D script to print the payload bytes by >> command type (a D script currently >> used with the user-land iscsitgtd provider) >> >> //////dtrace -n ''iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }'' >> / >> /But I get an error message >> "dtrace: invalid probe specifier iscsi*::: { @[probename] = >> sum(args[1]->ii_datalen); }: in action list: args[ ] may not be referenced >> because probe description iscsi*::: matches an unstable set of probes" >> > > Does it work if you just do: > > dtrace -n ''iscsi1234::: { @[probename] = sum(args[1]->ii_datalen); }'' > > ? >nope :) I might have confused you by referring to the user-land iscsitgt provider. The COMSTAR iscsi target is a kernel driver, so I would not be able to use the pid thanks Priya> If so, you can do: > > pids=`pgrep -x name_of_iscsi_process | awk ''{print "iscsi" $1 ":::" }''` > script=`echo $pids | sed ''s/ /,/g''` > dtrace -n "$script"''{ @[probename] = sum(args[1]->ii_datalen); }'' > > Cheers, > - jonathan > > >> Reading through one of the posts, I see a reply to the same problem posted >> earlier.. >> >> "if an enabling is associated with multiple probes //(in this particular >> case there are apparently several probes in //different //locations that >> match) the args[] array can''t work since different //probes //might have >> different arguments. >> The argN variable are always available. ////We''ve done some work towards >> addressing this issue, but there''s more >> //work to be done." >> >> Is this still true? or is there a way around this? All the probes have the >> same args[0] and args[1]. >> Any help is greatly appreciated >> > > You can >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090424/f6a2e8a7/attachment.html>
Jonathan Adams
2009-Apr-24 15:31 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On Fri, Apr 24, 2009 at 11:23:44AM -0400, Priya Krishnan wrote:> On 04/24/09 11:16, Jonathan Adams wrote: > >On Fri, Apr 24, 2009 at 10:55:21AM -0400, Priya Krishnan wrote: > > > >>/I have instrumented a sizable number of COMSTAR iscsi Target probes > >>(work in progress) and I run the following D script to print the payload > >>bytes by command type (a D script currently > >>used with the user-land iscsitgtd provider) > >> > >>//////dtrace -n ''iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }'' > >>/ > >>/But I get an error message > >>"dtrace: invalid probe specifier iscsi*::: { @[probename] = > >>sum(args[1]->ii_datalen); }: in action list: args[ ] may not be > >>referenced because probe description iscsi*::: matches an unstable set of > >>probes" > >> > > > >Does it work if you just do: > > > > dtrace -n ''iscsi1234::: { @[probename] = sum(args[1]->ii_datalen); }'' > > > >? > > > nope :) > > I might have confused you by referring to the user-land iscsitgt > provider. The COMSTAR iscsi target is a kernel driver, so I would not be > able to use the pidCould you please send me the output of: % dtrace -l -n ''iscsi*:::'' Cheers, - jonathan> thanks > Priya > >If so, you can do: > > > > pids=`pgrep -x name_of_iscsi_process | awk ''{print "iscsi" $1 ":::" > > }''` > > script=`echo $pids | sed ''s/ /,/g''` > > dtrace -n "$script"''{ @[probename] = sum(args[1]->ii_datalen); }'' > > > >Cheers, > >- jonathan > > > > > >>Reading through one of the posts, I see a reply to the same problem > >>posted earlier.. > >> > >>"if an enabling is associated with multiple probes //(in this particular > >>case there are apparently several probes in //different //locations that > >>match) the args[] array can''t work since different //probes //might have > >>different arguments. > >>The argN variable are always available. ////We''ve done some work towards > >>addressing this issue, but there''s more > >>//work to be done." > >> > >>Is this still true? or is there a way around this? All the probes have > >>the same args[0] and args[1]. > >>Any help is greatly appreciated > >> > > > >You can > > >
Priya Krishnan
2009-Apr-24 15:38 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
sure thing :) # dtrace -l -n ''iscsi*:::'' ID PROVIDER MODULE FUNCTION NAME 3270 iscsi idm idm_pdu_rx login-command 3271 iscsi idm idm_pdu_rx logout-command 3272 iscsi idm idm_pdu_rx_forward_ffp data-receive 3273 iscsi idm idm_pdu_rx data-receive 3274 iscsi idm idm_pdu_rx_forward_ffp task-command 3275 iscsi idm idm_pdu_rx task-command 3276 iscsi idm idm_pdu_rx_forward_ffp nop-receive 3277 iscsi idm idm_pdu_rx nop-receive 3278 iscsi idm idm_pdu_rx_forward_ffp text-command 3279 iscsi idm idm_pdu_rx text-command 3280 iscsi idm idm_pdu_tx login-response 3281 iscsi idm idm_pdu_tx logout-response 3282 iscsi idm idm_pdu_tx async_send 3283 iscsi idm idm_pdu_tx scsi-response 3284 iscsi idm idm_pdu_tx task-response 3285 iscsi idm idm_pdu_tx data-send 3286 iscsi idm idm_pdu_tx data-request 3287 iscsi idm idm_pdu_tx nop-send 3288 iscsi idm idm_pdu_tx text-response 3306 iscsi iscsit iscsit_op_scsi_cmd scsi-command thanks Priya On 04/24/09 11:31, Jonathan Adams wrote:> On Fri, Apr 24, 2009 at 11:23:44AM -0400, Priya Krishnan wrote: > >> On 04/24/09 11:16, Jonathan Adams wrote: >> >>> On Fri, Apr 24, 2009 at 10:55:21AM -0400, Priya Krishnan wrote: >>> >>> >>>> /I have instrumented a sizable number of COMSTAR iscsi Target probes >>>> (work in progress) and I run the following D script to print the payload >>>> bytes by command type (a D script currently >>>> used with the user-land iscsitgtd provider) >>>> >>>> //////dtrace -n ''iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }'' >>>> / >>>> /But I get an error message >>>> "dtrace: invalid probe specifier iscsi*::: { @[probename] = >>>> sum(args[1]->ii_datalen); }: in action list: args[ ] may not be >>>> referenced because probe description iscsi*::: matches an unstable set of >>>> probes" >>>> >>>> >>> Does it work if you just do: >>> >>> dtrace -n ''iscsi1234::: { @[probename] = sum(args[1]->ii_datalen); }'' >>> >>> ? >>> >>> >> nope :) >> >> I might have confused you by referring to the user-land iscsitgt >> provider. The COMSTAR iscsi target is a kernel driver, so I would not be >> able to use the pid >> > > Could you please send me the output of: > > % dtrace -l -n ''iscsi*:::'' > > Cheers, > - jonathan > > >> thanks >> Priya >> >>> If so, you can do: >>> >>> pids=`pgrep -x name_of_iscsi_process | awk ''{print "iscsi" $1 ":::" >>> }''` >>> script=`echo $pids | sed ''s/ /,/g''` >>> dtrace -n "$script"''{ @[probename] = sum(args[1]->ii_datalen); }'' >>> >>> Cheers, >>> - jonathan >>> >>> >>> >>>> Reading through one of the posts, I see a reply to the same problem >>>> posted earlier.. >>>> >>>> "if an enabling is associated with multiple probes //(in this particular >>>> case there are apparently several probes in //different //locations that >>>> match) the args[] array can''t work since different //probes //might have >>>> different arguments. >>>> The argN variable are always available. ////We''ve done some work towards >>>> addressing this issue, but there''s more >>>> //work to be done." >>>> >>>> Is this still true? or is there a way around this? All the probes have >>>> the same args[0] and args[1]. >>>> Any help is greatly appreciated >>>> >>>> >>> You can >>> >>>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090424/6ff47863/attachment.html>
Jonathan Adams
2009-Apr-24 15:58 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On Fri, Apr 24, 2009 at 11:38:39AM -0400, Priya Krishnan wrote:> sure thing :) > > # dtrace -l -n ''iscsi*:::''... (lots of probes, all of which are in the "iscsi" provider) ...>So what happens if you do: dtrace -n ''iscsi:::{ @[probename] = sum(args[1]->ii_datalen); }'' I don''t know whether that will work, but if not, it can probably be made to work with an RFE. With "iscsi*", there is no way this can ever work; dtrace can''t know whether or not new providers will come in matching "iscsi*", so it can''t safely assume that the args[] array is safe to use. Cheers, - jonathan
Priya Krishnan
2009-Apr-24 16:24 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
Hi Jonathan, Thank you! On 04/24/09 11:58, Jonathan Adams wrote:> On Fri, Apr 24, 2009 at 11:38:39AM -0400, Priya Krishnan wrote: > >> sure thing :) >> >> # dtrace -l -n ''iscsi*:::'' >> > ... (lots of probes, all of which are in the "iscsi" provider) ... > > > So what happens if you do: > > dtrace -n ''iscsi:::{ @[probename] = sum(args[1]->ii_datalen); }'' >No. I get the same error message as with iscsi*::: If I individually list the probe names, then I can get it to work. e.g. dtrace -n ''iscsi*:::login-command{trace(args[0]->ci_local);}''> I don''t know whether that will work, but if not, it can probably be made to > work with an RFE. >There is a requirement that the COMSTAR iscsi target provide all the probes provided by the iscsitgtd provider so that any DTrace script written for the iscsi provider will work with the iscsi target port provider as well without any modification. I used this one liner D script from the example given in http://wikis.sun.com/display/DTrace/iscsi+Provider dtrace -n ''iscsi*::: { @[probename] = sum(args[1]->ii_datalen); }''> With "iscsi*", there is no way this can ever work; dtrace can''t know whether or not new providers will come in matching "iscsi*", so it can''t safely assume > that the args[] array is safe to use. > Cheers, > - jonathan >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090424/816c822b/attachment.html>
Jonathan Adams
2009-Apr-24 16:33 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On Fri, Apr 24, 2009 at 12:24:23PM -0400, Priya Krishnan wrote:> Hi Jonathan, > Thank you! > > On 04/24/09 11:58, Jonathan Adams wrote: > >On Fri, Apr 24, 2009 at 11:38:39AM -0400, Priya Krishnan wrote: > > > >>sure thing :) > >> > >># dtrace -l -n ''iscsi*:::'' > >> > >... (lots of probes, all of which are in the "iscsi" provider) ... > > > > > >So what happens if you do: > > > > dtrace -n ''iscsi:::{ @[probename] = sum(args[1]->ii_datalen); }'' > > > No. I get the same error message as with iscsi*::: > > If I individually list the probe names, then I can get it to work. e.g. > dtrace -n ''iscsi*:::login-command{trace(args[0]->ci_local);}''What stability are you setting for the iscsi sdt probes (i.e. what''s the dtrace_pattr_t for them look like in sdt_subr.c)? Cheers, - jonathan
Priya Krishnan
2009-Apr-24 17:58 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On 04/24/09 12:33, Jonathan Adams wrote:> On Fri, Apr 24, 2009 at 12:24:23PM -0400, Priya Krishnan wrote: > >> Hi Jonathan, >> Thank you! >> >> On 04/24/09 11:58, Jonathan Adams wrote: >> >>> On Fri, Apr 24, 2009 at 11:38:39AM -0400, Priya Krishnan wrote: >>> >>> >>>> sure thing :) >>>> >>>> # dtrace -l -n ''iscsi*:::'' >>>> >>>> >>> ... (lots of probes, all of which are in the "iscsi" provider) ... >>> >>> >>> So what happens if you do: >>> >>> dtrace -n ''iscsi:::{ @[probename] = sum(args[1]->ii_datalen); }'' >>> >>> >> No. I get the same error message as with iscsi*::: >> >> If I individually list the probe names, then I can get it to work. e.g. >> dtrace -n ''iscsi*:::login-command{trace(args[0]->ci_local);}'' >> > > What stability are you setting for the iscsi sdt probes (i.e. what''s the > dtrace_pattr_t for them look like in sdt_subr.c)? >stab_attrs { DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA }, { DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN }, { DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN }, { DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA }, { DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },> Cheers, > - jonathan > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090424/b8b48860/attachment.html>
Chad Mynhier
2009-Apr-24 18:32 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
Just a quick question here: I note from the spec that the args[] array isn''t exactly the same for all of the probes. For example, we have these two probes: --------------------------------------------------------------------------- SCSI command scsi-command args[0] conninfo_t args[1] iscsiinfo_t args[2] iscsicmd_t --------------------------------------------------------------------------- SCSI response scsi-response args[0] conninfo_t args[1] iscsiinfo_t --------------------------------------------------------------------------- While args[0] and args[1] are the same (and are the same across all of the probes), scsi-command has a third argument that scsi-response doesn''t have. My suspicion is that this is why you''re getting the error message about the unstable set of probes. What happens if you limit this to iscsi:::data-*. These probes have exactly the same number and type of args. If my theory is correct, then this should work. (The error message you''re seeing is coming from usr/src/lib/libdtrace/common/dt_ident.c:dt_idcook_args() ("Cook a reference to the dynamically typed args[] array.") The error condition is that yypcb->pcb_probe is NULL, but I haven''t looked into when this would happen. I do note that dt_probe_t (the type of yypcb->pcb_probe) contains a pr_argc member (number of output probes), so that''s probably a good guess.) Chad
Priya Krishnan
2009-Apr-24 18:45 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On 04/24/09 14:32, Chad Mynhier wrote:> Just a quick question here: > > I note from the spec that the args[] array isn''t exactly the same for > all of the probes. For example, we have these two probes: > > --------------------------------------------------------------------------- > SCSI command scsi-command args[0] conninfo_t > args[1] iscsiinfo_t > args[2] iscsicmd_t > --------------------------------------------------------------------------- > > SCSI response scsi-response args[0] conninfo_t > args[1] iscsiinfo_t > --------------------------------------------------------------------------- > > While args[0] and args[1] are the same (and are the same across all > of the probes), scsi-command has a third argument that scsi-response > doesn''t have. My suspicion is that this is why you''re getting the > error message about the unstable set of probes. > > What happens if you limit this to iscsi:::data-*. These probes have > exactly the same number and type of args. If my theory is correct, > then this should work. > > (The error message you''re seeing is coming from > usr/src/lib/libdtrace/common/dt_ident.c:dt_idcook_args() ("Cook a > reference to the dynamically typed args[] array.") The error > condition is that yypcb->pcb_probe is NULL, but I haven''t looked into > when this would happen. I do note that dt_probe_t (the type of > yypcb->pcb_probe) contains a pr_argc member (number of output probes), > so that''s probably a good guess.) >Thank you Chad, for helping me understand the error. However just restricting to iscsi:::data-* does not work :( # dtrace -n ''iscsi:::data-* { @[probename] = sum(args[1]->ii_datalen); }'' dtrace: invalid probe specifier iscsi:::data-* { @[probename] = sum(args[1]->ii_datalen); }: in action list: args[ ] may not be referenced because probe description iscsi:::data-* matches an unstable set of probes> Chad >
Chad Mynhier
2009-Apr-24 19:08 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On Fri, Apr 24, 2009 at 2:45 PM, Priya Krishnan <Priya.Krishnan at sun.com> wrote:> On 04/24/09 14:32, Chad Mynhier wrote: >> >> (The error message you''re seeing is coming from >> usr/src/lib/libdtrace/common/dt_ident.c:dt_idcook_args() ("Cook a >> reference to the dynamically typed args[] array.") ?The error >> condition is that yypcb->pcb_probe is NULL, but I haven''t looked into >> when this would happen. ?I do note that dt_probe_t (the type of >> yypcb->pcb_probe) contains a pr_argc member (number of output probes), >> so that''s probably a good guess.) >> > > Thank you Chad, for helping me understand the error. However just > restricting to iscsi:::data-* does not work :( >Okay, so the problem here is just one of using the args[] array when specifying multiple probes via wildcard. Note that the following doesn''t work: # dtrace -ln ''fbt:genunix:*v32:entry'' ID PROVIDER MODULE FUNCTION NAME 18267 fbt genunix readv32 entry 18459 fbt genunix writev32 entry # # # dtrace -n ''fbt:genunix:*v32:entry{@c[args[0]] = count()}'' dtrace: invalid probe specifier fbt:genunix:*v32:entry{@c[args[0]] count()}: in action list: args[ ] may not be referenced because probe description fbt:genunix:*v32:entry matches an unstable set of probes # But this does: # dtrace -n ''fbt:genunix:readv32:entry,fbt:genunix:writev32:entry{@c[args[0]] = count()}'' dtrace: description ''fbt:genunix:readv32:entry,fbt:genunix:writev32:entry'' matched 2 probes ^C # This is likely just an artifact of how the parsing works. I haven''t looked deeply enough into it, though, so I don''t know if this is something that could be fixed or if it''s just a fundamental problem that can''t be worked around. Chad
Mike Shapiro
2009-Apr-24 19:55 UTC
[dtrace-discuss] Is there a way to workaround the "args[] may not be referenced....matches an unstable set of probes" error?
On Fri, Apr 24, 2009 at 03:08:17PM -0400, Chad Mynhier wrote:> On Fri, Apr 24, 2009 at 2:45 PM, Priya Krishnan <Priya.Krishnan at sun.com> wrote: > > On 04/24/09 14:32, Chad Mynhier wrote: > >> > >> (The error message you''re seeing is coming from > >> usr/src/lib/libdtrace/common/dt_ident.c:dt_idcook_args() ("Cook a > >> reference to the dynamically typed args[] array.") ?The error > >> condition is that yypcb->pcb_probe is NULL, but I haven''t looked into > >> when this would happen. ?I do note that dt_probe_t (the type of > >> yypcb->pcb_probe) contains a pr_argc member (number of output probes), > >> so that''s probably a good guess.) > >> > > > > Thank you Chad, for helping me understand the error. However just > > restricting to iscsi:::data-* does not work :( > > > > Okay, so the problem here is just one of using the args[] array when > specifying multiple probes via wildcard. Note that the following > doesn''t work: > > # dtrace -ln ''fbt:genunix:*v32:entry'' > ID PROVIDER MODULE FUNCTION NAME > 18267 fbt genunix readv32 entry > 18459 fbt genunix writev32 entry > # > # > # dtrace -n ''fbt:genunix:*v32:entry{@c[args[0]] = count()}'' > dtrace: invalid probe specifier fbt:genunix:*v32:entry{@c[args[0]] > count()}: in action list: args[ ] may not be referenced because probe > description fbt:genunix:*v32:entry matches an unstable set of probes > # > > But this does: > > # dtrace -n ''fbt:genunix:readv32:entry,fbt:genunix:writev32:entry{@c[args[0]] > = count()}'' > dtrace: description > ''fbt:genunix:readv32:entry,fbt:genunix:writev32:entry'' matched 2 > probes > ^C > > # > > This is likely just an artifact of how the parsing works. I haven''t > looked deeply enough into it, though, so I don''t know if this is > something that could be fixed or if it''s just a fundamental problem > that can''t be worked around. > > ChadThis is the correct behavior, as is the error message: if you write a script that uses a globbing expression (*v32) with an unstable args provider, then there is no way to know if, in the future, additional probes would match that expression and have arguments of different types in the same args[] position such that the clause is syntactically valid for some of them, yet syntactically invalid for others. We could completely change the behavior, such that we let you do this, and at run-time basically iterate over all probes and if something has no args[0] or you end up with bad syntax it simply emits an error message and skips that probe, but that isn''t how we designed it, and there are some pretty confusing implications there for programmers. -Mike -- Mike Shapiro, Sun Microsystems Open Storage / Fishworks. blogs.sun.com/mws/