Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / December 2006

Tip: Looking for answers? Try searching our database.

Bogus NullPointerExceptions

Thread view: 
Twisted - 15 Nov 2006 16:29 GMT
while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
== 0) {
    File parent = dir.getParentFile();
    dir.delete();
    dir = parent;
}

is being used to nuke some empty directories in an app of mine, then
the parent if it's now empty, and so forth up the chain to a top
directory.

Sometimes, the while line is throwing an NPE, a problem that seems
impossible.

First, baseDir is not null. It's set only once and never changed,
nothing that uses it ever throws an NPE except this line, and this line
only uses it as the RHS of .equals(), where null is supposed to be
legal anyway.

Second, dir is not null (I added an explicit throw of NPE if dir was
null just before the "while" loop and the "while" line still threw the
NPEs, rather than the line with the explicit throw).

Finally, dir.list().length is accessed only after a short-circuit and
after a test that dir.list() isn't null.

The only logical explanation seems to be that dir.list() can return an
array one nanosecond and null the next...

I don't suppose this is some weird concurrency problem. I guess I'll
try synchronizing on something (baseDir?) before the loop...
Patricia Shanahan - 15 Nov 2006 16:52 GMT
> while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
> == 0) {
[quoted text clipped - 27 lines]
> I don't suppose this is some weird concurrency problem. I guess I'll
> try synchronizing on something (baseDir?) before the loop...

Additionally, your code seems to me to depend on baseDir being on the
parent chain from the initial value of dir.

If that were not the case, you would reach the end of the parent chain
without encountering the stop condition, so getParentFile would return
null. If that happened, dir would be null in the while test without
having been null when you went through the check before the while loop.

If you have not already done so, perhaps check the code that calculates
dir and baseDir?

Patricia
Twisted - 15 Nov 2006 18:28 GMT
> Additionally, your code seems to me to depend on baseDir being on the
> parent chain from the initial value of dir.

It does, and earlier code guarantees that baseDir is on the parent
chain. (Certain dirs under baseDir are checked for being empty and
deleted if so.)
Patricia Shanahan - 15 Nov 2006 21:20 GMT
>> Additionally, your code seems to me to depend on baseDir being on the
>> parent chain from the initial value of dir.
>
> It does, and earlier code guarantees that baseDir is on the parent
> chain. (Certain dirs under baseDir are checked for being empty and
> deleted if so.)

The fact that directory X is under directory Y does not guarantee that
all File objects for X have Y as a getParentFile ancestor.

Of course, the way you are creating the File object may ensure that dir
does have baseDir as a getParentFile ancestor, but if I were you I would
put in a check for null getParentFile result just in case.

Patricia
Twisted - 16 Nov 2006 02:02 GMT
> The fact that directory X is under directory Y does not guarantee that
> all File objects for X have Y as a getParentFile ancestor.

It should, as long as X is genuinely under Y rather than some kind of
shortcut to X being under Y. In this particular application, is
certainly is under Y (it was reached by traversal from Y to begin
with).

Anyway it does seem to have been a concurrency issue -- synchronizing
on baseDir (which is app global and unchanging) at several key spots in
the code made the NPEs go away.
Andreas Leitgeb - 16 Nov 2006 08:16 GMT
> Anyway it does seem to have been a concurrency issue -- synchronizing
> on baseDir (which is app global and unchanging) at several key spots in
> the code made the NPEs go away.

There are two global (principially) modifyable "objects" involved:
baseDir, which you're sure remains unmodified throughout the
running program,  and the filesystem itself!

Perhaps the method gets to run twice in parallel, and
the parent-directory obtained in first thread has already
been deleted in the other thread just before you get
to deal with it in the first one. Or something like that.

In that case, synchronizing on baseDir obviously solved
the problem, even if just indirectly.  Probably it would
have been enough to synchronize only those methods on baseDir
that actually modify the filesystem's subtree starting at
baseDir.
Twisted - 16 Nov 2006 17:10 GMT
> > Anyway it does seem to have been a concurrency issue -- synchronizing
> > on baseDir (which is app global and unchanging) at several key spots in
[quoted text clipped - 14 lines]
> that actually modify the filesystem's subtree starting at
> baseDir.

I now think this is what was happening. I do now synchronize on baseDir
everywhere that might create or destroy subdirectories of it.
Patricia Shanahan - 16 Nov 2006 13:22 GMT
>> The fact that directory X is under directory Y does not guarantee that
>> all File objects for X have Y as a getParentFile ancestor.
[quoted text clipped - 3 lines]
> certainly is under Y (it was reached by traversal from Y to begin
> with).

That should work.

> Anyway it does seem to have been a concurrency issue -- synchronizing
> on baseDir (which is app global and unchanging) at several key spots in
> the code made the NPEs go away.

I would still try to nail down what is really happening, because adding
arbitrary synchronization can make a program work more often, without
fixing the underlying problem.

The implication is that baseDir is changing, although you thought it was
fixed, which is disturbing.

Alternatively, there could be an initialization problem, if dir is being
calculated in a different thread from the NPE.

Patricia
Twisted - 16 Nov 2006 17:13 GMT
> The implication is that baseDir is changing, although you thought it was
> fixed, which is disturbing.

It can't be -- it's final. It's the structure of the actual filesystem
that was changing asynchronously once I added multithreading.
Fred Kleinschmidt - 15 Nov 2006 20:12 GMT
> while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
> == 0) {
> File parent = dir.getParentFile();

Note that getParentFile() can return null.

> dir.delete();
> dir = parent;

if parent is null, dir is now null, and dir.equals() will generate a NPE

> }
>
><snip>
>
> Sometimes, the while line is throwing an NPE, a problem that seems
> impossible.

<snip>
Signature

Fred L. Kleinschmidt
Boeing Associate Technical Fellow
Technical Architect, Software Reuse Project

Twisted - 16 Nov 2006 01:58 GMT
> > while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
> > == 0) {
> > File parent = dir.getParentFile();
>
> Note that getParentFile() can return null.

I should have been clearer in the original post. This code is reached
only with dir a descendant of baseDir, so it can't reach the root and
try to keep going.
Daniel Pitts - 16 Nov 2006 02:24 GMT
> > > while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
> > > == 0) {
[quoted text clipped - 5 lines]
> only with dir a descendant of baseDir, so it can't reach the root and
> try to keep going.

It doesn't hurt to add an assert.

File parent = dir.getParentFile();
assert parent != null : "Whoops, missed my parent!";
Chris Uppal - 16 Nov 2006 13:55 GMT
> > > > while (!dir.equals(baseDir) && dir.list() != null &&
> > > > dir.list().length == 0) {
> > > > File parent = dir.getParentFile();

[...]

> It doesn't hurt to add an assert.
>
> File parent = dir.getParentFile();
> assert parent != null : "Whoops, missed my parent!";

Or better still -- since this code is running out of control while deleting
stuff (!) -- some heavy duty tracing/logging so that he can find out /exactly/
what erroneous assumption(s) the code is making.

And then leave the null-check in, but use a test plus fatal-internal-error
notification, not a switchable check like an assertion.

   -- chris
Ingo Menger - 16 Nov 2006 09:52 GMT
Twisted schrieb:

> > > while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
> > > == 0) {
[quoted text clipped - 5 lines]
> only with dir a descendant of baseDir, so it can't reach the root and
> try to keep going.

The NullPointerException tells you, however, that it can or that there
may be other reasons why getParentFile() returns null.
BTW, make sure you write code that will work with symbolic links.
Twisted - 16 Nov 2006 17:08 GMT
> > I should have been clearer in the original post. This code is reached
> > only with dir a descendant of baseDir, so it can't reach the root and
[quoted text clipped - 3 lines]
> may be other reasons why getParentFile() returns null.
> BTW, make sure you write code that will work with symbolic links.

There are none in this application. It creates and destroys
subdirectories of baseDir to house temporary data of various kinds. The
directories are only ever reached by drilling down from baseDir to
begin with. Someone would have to manually and deliberately drop a
symlink to a different part of the directory hierarchy beneath baseDir
for there to be a problem.

It's unlikely even then -- it gets dir from an internal memory of what
it's created, rather than from browsing around under baseDir.
Tom Forsmo - 22 Nov 2006 11:08 GMT
> while (!dir.equals(baseDir) && dir.list() != null && dir.list().length
> == 0) {
>     File parent = dir.getParentFile();
>     dir.delete();
>     dir = parent;
> }

There is one big problem with your code. dir can be changed during the
loop, so it does not matter whether you are testing dir for null before
the loop starts. According to the code you have shown us, baseDir only
needs to be checked before the loop. because its not used elsewhere in
the code so it does not change.

The reason for your problem is that you can *not guarantee* that any of
the references/methods you are using does not return null (you are
experiencing an NPE even when you claim there can not be any).
In addition, your code is very unstable. If, for a reason, you change
how baseDir is used or how getParentFile() works, you could get into
problems again in the future.

What you need to do is the following, for absolute certainty:

   while (dir != null && baseDir != null &&
          !dir.equals(baseDir) &&
          dir.list() != null &&
     dir.list().length > == 0) {
    ...
   }

tom
Twisted - 22 Nov 2006 21:12 GMT
> What you need to do is the following, for absolute certainty:
>
[quoted text clipped - 4 lines]
>      ...
>     }

This has been debated to death already.

As was discussed earlier, if it DID happen that drilling down from
baseDir to an empty child directory and then working back up with
getParent() could produce a null before reaching baseDir again, it
would mean that the library had a bug (unless some sort of symlink was
placed into one of the directories, which my app doesn't do). In actual
FACT, the NPEs went away when some synchronization was sprinkled over
the problem, indicating a concurrency issue. Finally, contrary to the
alarmist remarks of one poster, it can't "run amok deleting stuff"
because it is explicitly only capable of deleting a directory that is
empty at the time. :P
Ingo Menger - 23 Nov 2006 08:54 GMT
Twisted schrieb:

> > What you need to do is the following, for absolute certainty:
> >
[quoted text clipped - 12 lines]
> would mean that the library had a bug (unless some sort of symlink was
> placed into one of the directories, which my app doesn't do).

It could be enough if some component of the path to baseDir is a
symlink.
$ cd /foo/bar/base
$ /usr/bin/pwd
/has/nothing/to/do/with/pathname/entered/has/it?

Or is there a guarantee that getParent() will work "in text mode" only?
Twisted - 23 Nov 2006 12:10 GMT
> It could be enough if some component of the path to baseDir is a
> symlink.
[quoted text clipped - 3 lines]
>
> Or is there a guarantee that getParent() will work "in text mode" only?

I suppose every newcomer to this thread will need this explained
separately and again.

The app creates directories under baseDir. It also creates some files.
It does not create any symlinks, nor is anyone expected to manually
change anything in there.

It also sometimes deletes one of the files, and if this leaves a
directory empty, deletes the directory and works its way up the chain
in case this had made the parent empty and so forth.

The worst case "run amok" scenario would require that someone create a
chain of empty directories somewhere and then place a symlink to the
last one under baseDir. The app would then have to decide on its own to
put a file in a same-named subdirectory, and finding one already
existed not create it; the file then ends up in the symlink. And then
the app has to later delete the file. And the result of this worst-case
scenario is for it to delete the empty directories in the other chain
recursively until it hit one that wasn't empty. And it would have to
delete an empty logical filesystem root before it tried to delete null.

I don't think I've ever even *seen* an empty logical filesystem root.
An empty individual drive root from time to time and *that* is rare.

And of course it can't delete an actual file, except for the extremely
unlikely occurrence of someone (other than the app, now that it's
synchronizing on baseDir) putting a file manually into one of the
subdirectories just as the app is between testing it for being empty
and deleting it. (The most likely case would actually be running two
concurrent instances of the app and pointing them both at the same
baseDir, or at least one at a parent or child of the other's. And that
will, at worst, recreate the concurrency problems that used to exist.)

This thread is over.
Tom Forsmo - 24 Nov 2006 01:07 GMT
> I suppose every newcomer to this thread will need this explained
> separately and again.

Don't be condescending. You have a bad design and you insist on fixing
it by adding more complexity, synchronisation.

> This thread is over

That's why its not over, you may ignore any further comments if you
wish, but you should not tell others what to do with the thread in a
public forum.

tom
Twisted - 24 Nov 2006 23:08 GMT
> > I suppose every newcomer to this thread will need this explained
> > separately and again.
>
> Don't be condescending. You have a bad design and you insist on fixing
> it by adding more complexity, synchronisation.

Don't be insulting. There is nothing wrong with my design. I'd like to
see you try to suggest a better way to:
* Delete a file in a particular subtree and then
* If the directory it's in is now empty, delete that, and if that
leaves its parent directory entry, delete that too, and so forth, while
remaining confined to that subtree (whose root, even if it becomes
empty, isn't deleted).

> That's why its not over, you may ignore any further comments if you
> wish, but you should not tell others what to do with the thread in a
> public forum.

You seem to misunderstand. Everything has already been said, and now
you are just going around in circles (and forcing me to do so as well,
to rebut insulting BS like what you just posted) saying the same things
repeatedly. You are awfully free with criticism, but seem to lack any
constructive suggestions -- or if not, you're keeping them to yourself.
I suggest you reverse that pattern -- keep your criticisms to yourself
and make any constructive suggestions you may have public. (Yes, that
does mean that in the event you have no constructive suggestions you
should simply shut up.)

But I suspect both of us have better things to do than to continue this
pointless debate. Obviously you disagree with me; equally obviously
neither of us is likely to change the other's mind. Slinging insults
around won't do anything but waste your time slinging them and mine
cleaning up after you. So let's both just go home.
sgoo - 25 Nov 2006 01:37 GMT
Concurrency may be the problem. Suppose your code runs in thread A, but
another thread B is doing some evil things:

Thread A: check dir.equals(baseDir), false
Thread A: checking dir.list() != null, true, go on

Suddenly --
Thread B: remove dir

Thread A: dir.list().length == 0, NullPointerException! because
dir.list()!=null is no longer true.
foobarbazqux@hotmail.com - 25 Nov 2006 14:27 GMT
> You seem to misunderstand. Everything has already been said, and now
> you are just going around in circles (and forcing me to do so as well,

"forcing"? You poor little weak helpless thing! I feel so sorry for
you, being forced against your will to make newsgroup postings by the
nasty big Java programmers.

...

Your design is obviously unmaintainable and inefficient, why can you
not see this?
Twisted - 26 Nov 2006 04:31 GMT
> [snip] Your design is [snip]

If you are going to criticize, make it constructive. Suggest how you
would do it instead. Otherwise, shut up.
Andrew Thompson - 26 Nov 2006 04:49 GMT
> > [snip] Your design is [snip]
>
> If you are going to criticize, make it constructive. Suggest how you
> would do it instead.

The 'earth is round' answer has already been provided
by Patricia, Tom, Fred & nalhawash with refinements
offered by Andreas, Daniel, Chris and Ingo.

How many times do you need to hear it, before it
does not bear repeating?  (Note that most of the
rest of the people here, would be grateful to
foobarbaz for sparing us the bandwidth..)

>... Otherwise, shut up.

As an aside.  You are an *excellent* troll -
my score for your recent efforts, is '9.4'.

Andrew T.
Twisted - 26 Nov 2006 06:26 GMT
> How many times do you need to hear it, before it
> does not bear repeating?  (Note that most of the
> rest of the people here, would be grateful to
> foobarbaz for sparing us the bandwidth..)

Which is what, add an extra test for null every iteration of a loop
that in the current setting can never test true? (Now that access is
synchronized. It hasn't cropped up in days now.)
foobarbazqux@hotmail.com - 26 Nov 2006 21:06 GMT
> > > [snip] Your design is [snip]
> >
> > If  ...

> (Note that most of the
> rest of the people here, would be grateful to
> foobarbaz for sparing us the bandwidth..)

Andrew, please use your killfile. I'm just applying reductio ad
absurdam to Twisted's assertion that he is FORCED to respond to every
posting. Everyone but he must by now be aware that it is only Twisted's
own ego that forces him to carry on like this. I doubt he is capable of
getting it under control.

If Twisted doesn't understand why synchronisation reduced the frequency
of occurrence of the NPE then he is just postponing the date when he'll
have to get to grips with his bugs.

I wonder if Twisted has considered upgrading his JRE to 1.6 and
retesting without synchronisation?
Twisted - 27 Nov 2006 03:21 GMT
[Snip some nonsensical ranting about my ego]

You seem to be obsessed with other peoples' egos. Perhaps this is the
wrong newsgroup though.

> If Twisted doesn't understand why synchronisation reduced the frequency
> of occurrence of the NPE then he is just postponing the date when he'll
> have to get to grips with his bugs.

Like I've said a thousand times before, it didn't "reduce" anything; it
stopped the NPEs, because concurrency flubs were the *sole* cause. The
only way it could happen any more would be if a user elects to put a
symlink into the directory tree it created, which isn't intended for
user modification anyway.

> I wonder if Twisted has considered upgrading his JRE to 1.6 and
> retesting without synchronisation?

I *am* using 1.6, but I don't see any point in doing anything without
synchronization that clearly requires it for threadsafety!
foobarbazqux@hotmail.com - 28 Nov 2006 20:03 GMT
> [Snip some nonsensical ranting about my ego]

You mean this
"Twisted's assertion that he is FORCED to respond to every
posting. Everyone but he must by now be aware that it is only Twisted's
own ego that forces him to carry on like this."

> > If Twisted doesn't understand why synchronisation reduced the frequency
> > of occurrence of the NPE then he is just postponing the date when he'll
[quoted text clipped - 5 lines]
> symlink into the directory tree it created, which isn't intended for
> user modification anyway.

Q.E.D.

I'm not forcing you to respond, you have the choice don't you?

Concurrency "flubs" must almost always be caused by incorrect use of
threads in the first place.
Twisted - 29 Nov 2006 11:42 GMT
> > [Snip some nonsensical ranting about my ego]
>
> You mean this
> [Snip some more nonsensical ranting about my ego]

Just because you repeat it six zillion times doesn't mean it's true
asswipe.

> I'm not forcing you to respond, you have the choice don't you?

Not if I want your public accusations to be countered by equally-public
rebuttals.

> Concurrency "flubs" must almost always be caused by incorrect use of
> threads in the first place.

As in lack of "synchronized (foo)" around access to shared
non-immutable resources?
foo bar baz qux - 29 Nov 2006 21:36 GMT
> > > [Snip some nonsensical ranting about my ego]
> >
> > You mean this
> > [Snip some more nonsensical ranting about my ego]

You mean this
"Twisted's assertion that he is FORCED to respond to every
posting. Everyone but he must by now be aware that it is only Twisted's
own ego that forces him to carry on like this."

> Just because you repeat it six zillion times doesn't mean it's true

If it was true the first time, it would still be true the six
zillionth.

> asswipe.

It's conventional to put your signature at the *end* of the message.

> > I'm not forcing you to respond, you have the choice don't you?
>
> Not if I want your public accusations to be countered by equally-public
> rebuttals.

So, you can be made to dance at anyone's whim, anytime. For the rest of
your life.

> > Concurrency "flubs" must almost always be caused by incorrect use of
> > threads in the first place.
>
> As in lack of "synchronized (foo)" around access to shared
> non-immutable resources?

Not necessarily.
Tom Forsmo - 30 Nov 2006 00:54 GMT
> You mean this
> "Twisted's assertion that he is FORCED to respond to every
> posting. Everyone but he must by now be aware that it is only Twisted's
> own ego that forces him to carry on like this."

Yes, and thats the funny part....

>> asswipe.
>
> It's conventional to put your signature at the *end* of the message.

LOL

>>> I'm not forcing you to respond, you have the choice don't you?
>> Not if I want your public accusations to be countered by equally-public
>> rebuttals.
>
> So, you can be made to dance at anyone's whim, anytime. For the rest of
> your life.

Another LOL
Twisted - 30 Nov 2006 05:39 GMT
[filtering all inarticulate, content-free blather]

[nothing left?!]

Hrm, looks like you forgot to actually put anything meaningful in your
post.

OK, moving along now...
Daniel Pitts - 30 Nov 2006 18:01 GMT
> [filtering all inarticulate, content-free blather]
>
[quoted text clipped - 4 lines]
>
> OK, moving along now...

He doesn't need to put anything meaningful, if he follows your example
at least.
Twisted - 30 Nov 2006 23:09 GMT
> He doesn't need to put anything meaningful, if he follows your example
> at least.

This appears to be an insult. If so, it is false and you should shut up.
Twisted - 30 Nov 2006 05:26 GMT
> You mean this[snip]

SHUT UP ALREADY. You're like a goddam stuck record!

> If it was true the first time, it would still be true the six
> zillionth.

So would "2 + 2 = 5". Your statement is basically meaningless.

> It's conventional to put your signature at the *end* of the message.

Oh ho, very clever. Not. Your wit is comparable to that of one of my
neighbor's three pigs. The one that frequently leaves runny turds right
at the boundary fence as a matter of fact.

[Further insulting dreck deleted, all of it mischaracterizing me
grossly without anything resembling evidence]

> > > Concurrency "flubs" must almost always be caused by incorrect use of
> > > threads in the first place.
[quoted text clipped - 3 lines]
>
> Not necessarily.

In the same way that your various spoutings are "not necessarily" due
to a deep loathing you feel towards me? Yeah, right. Like I'm going to
believe *you*.
Twisted - 27 Nov 2006 03:39 GMT
[Snip some nonsensical ranting about my ego]

You seem to be obsessed with other peoples' egos. Perhaps this is the
wrong newsgroup though.

> If Twisted doesn't understand why synchronisation reduced the frequency
> of occurrence of the NPE then he is just postponing the date when he'll
> have to get to grips with his bugs.

Like I've said a thousand times before, it didn't "reduce" anything; it
stopped the NPEs, because concurrency flubs were the *sole* cause. The
only way it could happen any more would be if a user elects to put a
symlink into the directory tree it created, which isn't intended for
user modification anyway.

> I wonder if Twisted has considered upgrading his JRE to 1.6 and
> retesting without synchronisation?

I *am* using 1.6, but I don't see any point in doing anything without
synchronization that clearly requires it for threadsafety!
foobarbazqux@hotmail.com - 26 Nov 2006 20:55 GMT
> > [snip] Your design is [snip]
>
> If you are going to criticize,

What do you mean "if". I am definitely criticizing your approach to the
problem. Couldn't you tell?

> make it constructive.

You're deluded if you think you have any authority in this newsgroup. I
spurn your directive! You've had a surfeit of constructive help.

> Suggest how you would do it instead.

Another order, your delusion deepens. You've had plenty of sensible
suggestions which you chose to ignore or dismiss offhand.

> Otherwise, shut up.

You thrice compound your error. Your debating skills might suffice for
5 year olds in the schoolyard but I think you'll need to apply more
adult reasoning in this newsgroup if you wish to persuade anyone.

Why don't you use the Observer Pattern?
Twisted - 27 Nov 2006 03:17 GMT
> You're deluded if you think you have any authority in this newsgroup.

So are you. Yet you persist in telling me what to do. Why?

> Another order, your delusion deepens. You've had plenty of sensible
> suggestions which you chose to ignore or dismiss offhand.

I determined that the problem was a concurrency one and fixed it. End
of story -- or should have been, anyway. Why do you keep posting to
this thread?

> ...if you wish to persuade anyone.

I don't wish to persuade anyone of anything, except that they should
leave me alone when they are not responding helpfully to something I
wrote. Right now there are several people doing neither (here and in
another thread). They stand to gain nothing, yet they continue, and in
doing so they continue to aggravate me.
foobarbazqux@hotmail.com - 27 Nov 2006 22:44 GMT
> > You're deluded if you think you have any authority in this newsgroup.
>
> So are you.

More pantomime debate. If I did I would be, but I didn't.

> Yet you persist in telling me what to do.

You said "If you are going to criticize,make it constructive."

I said "I think you'll need to apply more adult reasoning in this
newsgroup if you wish to persuade anyone."

See the difference? Prefixing with "I think" makes mine more of an
observation than your directive".

> Why?

I'll take that as rhetorical.

> > You've had plenty of sensible
> > suggestions which you chose to ignore or dismiss offhand.
>
> I determined that the problem was a concurrency one and fixed it.

No you didn't, you found that adding concurrency diminished the
frequency of occurrence. The cause is as much a mystery to you today as
it was when you first posted on this subject.

> End of story -- or should have been, anyway. Why do you keep posting to
> this thread?

You enjoy it really.

> > ...if you wish to persuade anyone.
>
> I don't wish to persuade anyone of anything, except that they should
> leave me alone when they are not responding helpfully to something I
> wrote. Right now there are several people doing neither (here and in
> another thread). They stand to gain nothing,

You've missed something there.

> yet they continue, and in doing so they continue to aggravate me.

As ye sow, so shall ye reap.
Twisted - 28 Nov 2006 06:58 GMT
[Snip lots of content-free ramblings]

> > I determined that the problem was a concurrency one and fixed it.
>
> No you didn't, you found that adding concurrency diminished the
> frequency of occurrence.

To zero. Which is the same thing, moron.

> > I don't wish to persuade anyone of anything, except that they should
> > leave me alone when they are not responding helpfully to something I
> > wrote. Right now there are several people doing neither (here and in
> > another thread). They stand to gain nothing,
>
> You've missed something there.

Oh? Such as? Tell me what you gain by posting drivel like the reeking
turd I'm replying to?
Or hacking GG to make my replying spam random extra newsgroups and put
me over Google's dumbass limit, for that matter? (Which activity you
seem to have stopped, once I caught on to it and it thereby became
futile.)

> > yet they continue, and in doing so they continue to aggravate me.
>
> As ye sow, so shall ye reap.

Are you claiming that I attacked you before you ever attacked me? If
so, it's a damn lie...
foobarbazqux@hotmail.com - 28 Nov 2006 20:24 GMT
> > > I determined that the problem was a concurrency one and fixed it.
> >
> > No you didn't, you found that adding concurrency diminished the
> > frequency of occurrence.
>
> To zero. Which is the same thing, moron.

For all you know, the frequency of occurrence has a period greater than
the short elapsed time over which you've carried out testing.

Saying it "is the same thing" is like saying the cause of a wound
bleeding is the absence of bandaging. Using Java synchronisation could
be just a bandage, in which case you haven't detected the real cause.

> > > I don't wish to persuade anyone of anything, except that they should
> > > leave me alone when they are not responding helpfully to something I
[quoted text clipped - 4 lines]
>
> Oh? Such as? Tell me what you gain

Isn't it obvious?

> by posting drivel like the reeking turd I'm replying to?

You love it.

> Or hacking GG

a) Look at the headers of the chain of messages and you'll see who
added the FollowUp.

b) Using Followups is hardly hacking (in either sense). Even GG provide
a "Add a followup-to header" link above every "Repy-to" form. Only a
fool thinks clicking a link in a web page is hacking.

> to make my replying spam random extra newsgroups and put
> me over Google's dumbass limit,

Would that be dumbass limit as in limit for dumbasses? How apt.

> for that matter? (Which activity you
> seem to have stopped, once I caught on to it and it thereby became
> futile.)

I didn't start, so it's inaccurate to say I stopped.

> > > yet they continue, and in doing so they continue to aggravate me.
> >
> > As ye sow, so shall ye reap.
>
> Are you claiming that I attacked you before you ever attacked me?

Let me explain it in simple words: You aggravate others, this leads to
others aggravating you in turn. Saying "but but he started it!" is a
rather juvenile form of pleading.

> If so, it's a damn lie...

Obvious use of the strawman argument there. Your premise is false. I'm
not attacking you, I'm having a pleasant conversation with you.
Twisted - 29 Nov 2006 11:56 GMT
> For all you know, the frequency of occurrence has a period greater than
> the short elapsed time over which you've carried out testing.

Idiot. The frequency of occurrence can be calculated. It is zero unless
all of the following occur:
* A symlink is dropped under baseDir, externally, whose destination is
a directory on a different partition.
* This partition has zero files.
* Java doesn't treat its root directory as having a parent that is a
"logical root" for all drives (but last time I checked, it does).
* The attempt to delete the partition's empty root directory succeeds,
so the loop continues with "dir" equal to "null" to eventually throw
NPE instead of bombing on a failed deletion instead.

I'm fairly sure the NPE actually *can't happen* now, and the only
consequences of someone dropping a symlink in there would be a) the dir
containing the symlink is never eligible for deletion (same as if a
file got dropped in there) and b) the symlink's destination might be
deleted, if it's empty. Of course, the symlink might then cause
problems in a later run, too. But that a) can't happen on Windows
systems at all and b) requires unlikely, oddball user behavior on Unix
systems. (I'm unsure whether Mac aliases work as true symbolic links,
while I know that Windows shortcuts don't; Mac OSX presumably has true
symlinks but they may be disused relative to aliases, if the latter
weren't retrofit to use the former under the hood. I don't know much
about MacOS more recent than 8 or so, so...)

> Saying it "is the same thing" is like saying the cause of a wound
> bleeding is the absence of bandaging. Using Java synchronisation could
> be just a bandage, in which case you haven't detected the real cause.

The cause was concurrent modifications to the directory tree by
different threads of the same application. Synchronization is the cure,
not just a bandage, for that kind of thing (unless the multithreading
is itself unnecessary -- but that's not the case here).

Why is this even still being discussed?!

You seem awfully convinced that something else is wrong, especially for
someone who necessarily knows an awful lot less about the code than I
do. And no, I won't post the entire source here just for your
edification! I do generally favor open source, but that doesn't by any
means I support demanding or forcing developers to open their
source...aside from voting machines or other publicly-funded stuff.
(Yeah, I know, the voting machine manufacturers are private businesses,
but nobody buys the voting machines with anything except tax money, and
transparency of the process is crucial, so...Diebold is welcome to keep
the source code for their ATMs closed if they wish...)

> > > > I don't wish to persuade anyone of anything, except that they should
> > > > leave me alone when they are not responding helpfully to something I
[quoted text clipped - 6 lines]
>
> Isn't it obvious?

No, it isn't. You've invested an awful lot of time and effort in a vain
quest to "prove" your opponent not only wrong but some kind of deranged
moron and lunatic, but you haven't bothered to tell anybody why you
want this.

> > by posting drivel like the reeking turd I'm replying to?
>
> You love it.

No, I don't, but I am not able to just leave it alone either, or people
might actually start to believe your BS.

[Snip further insults, irrelevancies, and BS]

> Let me explain it in simple words: You aggravate others

False.

I did not throw the first punch, and anyone claiming otherwise is
either a retard or a liar.
If something I did is "aggravating", it was after I was provoked. By
you.

> Obvious use of the strawman argument there. Your premise is false. I'm
> not attacking you, I'm having a pleasant conversation with you.

If you think this is a "pleasant conversation" then you are hopelessly
delusional and need to check yourself into the nearest psych ward. They
will give you all the Thorazine you need, not to mention take your
computer away from you so that you quit posting drivel and BS to
usenet. What kind of "pleasant conversation" has one of the
participants (i.e. you) uttering insults, put-downs, and other such
crap every other time he opens his mouth? Hmm?
foo bar baz qux - 29 Nov 2006 22:14 GMT
> > For all you know, the frequency of occurrence has a period greater than
> > the short elapsed time over which you've carried out testing.
>
> Idiot. <usual boring rant deleted unread>

Addressed at end ...

> Why is this even still being discussed?!

Because you wish to continue discussing it.

> You seem awfully convinced that something else is wrong,

Do I seem convinced?

> > > > > I don't wish to persuade anyone of anything, except that they should
> > > > > leave me alone when they are not responding helpfully to something I
[quoted text clipped - 8 lines]
>
> No, it isn't.

Think about it a little harder. I've dropped plenty of rather obvious
clues.

> You've invested an awful lot of time and effort in a vain
> quest to "prove" your opponent not only wrong but some kind of deranged
> moron and lunatic,

I've invested a lot less time than you. I'm not on a quest. If you've
been proved to be those things then it is you who has provided the
proof.

> but you haven't bothered to tell anybody why you
> want this.

I don't but if I did want that, I wouldn't necessarily feel any need to
say why.

> > > by posting drivel like the reeking turd I'm replying to?
> >
> > You love it.
>
> No, I don't, but I am not able to just leave it alone either, or people
> might actually start to believe your BS.

You can't leave it alone *because* you love that sort of response.

> [Snip further insults, irrelevancies, and BS]

You mean this

T:  yet they continue, and in doing so they continue to aggravate me.

F:  As ye sow, so shall ye reap.

T:  Are you claiming that I attacked you before you ever attacked me?

F:  Let me explain it in simple words: You aggravate others, this leads
to
    others aggravating you in turn. Saying "but but he started it!" is
a
    rather juvenile form of pleading.

> > Let me explain it in simple words: You aggravate others
>
> False.

Anyone reading the start of this thread can see that you aggravate
others.

> I did not throw the first punch, and anyone claiming otherwise is
> either a retard or a liar.

You are repeating yourself, did you forget. Here's my earlier reply

F: Saying "but but he started it!" is a rather juvenile form of
pleading.

> If something I did is "aggravating", it was after I was provoked. By
> you.

You are repeating yourself again. I refer you to my earlier answer.

> > Obvious use of the strawman argument there. Your premise is false. I'm
> > not attacking you, I'm having a pleasant conversation with you.
>
> If you think this is a "pleasant conversation".

I'm enjoying it, aren't you?

> then you are hopelessly
> delusional and need to check yourself into the nearest psych ward. They
> will give you all the Thorazine you need, not to mention take your
> computer away from you so that you quit posting drivel and BS to
> usenet.

Do you speak from experience?

> What kind of "pleasant conversation" has one of the
> participants (i.e. you) uttering insults, put-downs, and other such
> crap

I'll treat this as an abstract question: The kind where the other
participant enjoys it.

Remember at the top of this reply I said "addressed at end." Were
anyone following this thread, they would be able to observe that it is
you who introduce those things into our conversation.

> every other time he opens his mouth? Hmm?

I  know you prefer unconventional approaches to tasks (e.g. loading
icons), but I operate my keyboard with my hands. Your way must be messy
and uncomfortable :-)
Twisted - 30 Nov 2006 05:37 GMT
> > Why is this even still being discussed?!
>
> Because you wish to continue discussing it.

No I don't. But by wish not to leave this with an insult standing
unchallenged is stronger. Now why don't you tell me why *you* wish to
continue this nonsense of yours?

> > You seem awfully convinced that something else is wrong,
>
> Do I seem convinced?

This is comp.lang.java.programmer. Psychiatrists are asked to please
leave; only rigorous logic is wanted here, and answering questions with
questions, psychobabble, trying to draw out the "patient", and so forth
are ineffective on software anyway. So please go away.

[several meaningless, untrue insults snipped]

> > No, I don't, but I am not able to just leave it alone either, or people
> > might actually start to believe your BS.
>
> You can't leave it alone *because* you love that sort of response.

Another lie. You and Attacki vying for some prize here? First to
accumulate 100 bald-faced lies that you get called on? (Whoever gets
there first is the loser, as far as I am concerned.)

> > [Snip further insults, irrelevancies, and BS]
>
> You mean this

[snip repetition]

STOP REINSERTING SNIPPED MATERIAL FUCKHEAD. I SNIPPED IT BECAUSE I
DON'T WANT IT BEING SPREAD AROUND OR BELIEVED BY ANYBODY. ARE YOU
f.cking STUPID OR SOMETHING?! JEEZ!

> > > Let me explain it in simple words: You aggravate others
> >
> > False.
>
> Anyone reading the start of this thread can see that you aggravate
> others.

No. They can see that people (including, eventually, me) *got*
aggravated; that much is true. But that doesn't mean I did it. Why on
earth would I want to anyway, given what the result is? Anyway, it is
only people like you who feel the need to point fingers of blame (and
invariably end up pointing in the wrong damn direction at that).

> You are repeating yourself, did you forget. Here's my earlier reply

[snip insult]

Eh. What? There's no "reply" there, just another dim-witted ad-hominem
attack.

> I'm enjoying it, aren't you?

NO, you bloody moron! Now shut up! :P

> > then you are hopelessly
> > delusional and need to check yourself into the nearest psych ward. They
[quoted text clipped - 3 lines]
>
> Do you speak from experience?

Don't be insulting.

> I'll treat this as an abstract question: The kind where the other
> participant enjoys it.

Clearly a lie, since I do not enjoy it. This is work for me, not play;
work you're forcing me to do, to clean up the stupid messes you keep
leaving.

> Remember at the top of this reply I said "addressed at end." Were
> anyone following this thread, they would be able to observe that it is
> you who introduce those things into our conversation.

Stop lying and shut the hell up.

> > every other time he opens his mouth? Hmm?
>
> I  know you prefer unconventional approaches to tasks (e.g. loading
> icons), but I operate my keyboard with my hands. Your way must be messy
> and uncomfortable :-)

This is way too stupid a remark to bother dignifying with a proper
rebuttal. Go away.
Tom Forsmo - 30 Nov 2006 01:05 GMT
>> Let me explain it in simple words: You aggravate others
>
> False.

No its actually true, you do aggravate others, trust me that's why you
have been spending the better part of a week or two arguing this and a
couple of other threads :)

> I did not throw the first punch, and anyone claiming otherwise is
> either a retard or a liar.
> If something I did is "aggravating", it was after I was provoked. By
> you.

To say it with your words: [irrelevant dribble delete] (well no quite
deleted, but any way...)

But in any case, if you get into a street fight because some guy tries
to hit you and you throw a punch you that misses and then throws a punch
that  kills the guy, you think you can get away with telling the police
its not your fault because he started it... lol

>> Obvious use of the strawman argument there. Your premise is false. I'm
>> not attacking you, I'm having a pleasant conversation with you.
>
> If you think this is a "pleasant conversation" then you are hopelessly
> delusional and need to check yourself into the nearest psych ward.

The cat always thinks its pleasant to chase a mouse....
Twisted - 30 Nov 2006 05:41 GMT
> >> Let me explain it in simple words: You aggravate others
> >
> > False.
>
> No its actually true [reiteration of stupid baseless insult]

Go to hell.

> But in any case, if you get into a street fight because some guy tries
> to hit you and you throw a punch you that misses and then throws a punch
> that  kills the guy, you think you can get away with telling the police
> its not your fault because he started it... lol

When you start to come off your meth high and make sense, please be
sure to let me know.

> The cat always thinks its pleasant to chase a mouse....

But it's not nice for the mouse. Cats aren't civilized or self-aware or
any of that, but humans are, and human behavior that's equivalent and
directed at other human beings is wrong. So stop it.
Tom Forsmo - 02 Dec 2006 02:13 GMT
>>>> Let me explain it in simple words: You aggravate others
>>> False.
>> No its actually true [reiteration of stupid baseless insult]
>
> Go to hell.

I am in hell at the moment :) and I will stay here until I vanquish the
devil...

>> But in any case, if you get into a street fight because some guy tries
>> to hit you and you throw a punch you that misses and then throws a punch
[quoted text clipped - 3 lines]
> When you start to come off your meth high and make sense, please be
> sure to let me know.

Im am sorry that it does not make any sense to you, but please let me
know in the future if you manage to make sense of it (its really not
that difficult to understand).

>> The cat always thinks its pleasant to chase a mouse....
>
> But it's not nice for the mouse.

Did you ever hear the story of the scorpion and the turtle trying to
cross a stream?...

Animals dont have feelings and abstract understanding as humans do, so
to them its not a matter whether its nice, it just a biological reflex
of how to react, in other words their nature.

> Cats aren't civilized

Shall I tell you why? because only people can be civilised, its part of
the definition of being civilised.

> or self-aware or
> any of that, but humans are, and human behavior that's equivalent and
> directed at other human beings is wrong. So stop it.

Yes please stop it, you are directing non-human behaviour at other
humans. And as you say it; its wrong, so stop it.
Twisted - 02 Dec 2006 03:59 GMT
[compares me to satan]

Well, at least you aim high, even if you keep mistakenly attacking the
wrong target. He's THATaway, doofus!

> Im am sorry that it does not make any sense to you, but please let me
> know in the future if you manage to make sense of it (its really not
> that difficult to understand).

I'm guessing it wouldn't have been had you been sober at the time you
wrote it. Unfortunately, it came out a mangled mess and seemingly
completely irrelevant here anyway.

> >> The cat always thinks its pleasant to chase a mouse....
> >
[quoted text clipped - 6 lines]
> to them its not a matter whether its nice, it just a biological reflex
> of how to react, in other words their nature.

Yeah. So, what's *your* excuse?

> Yes please stop it, you are directing non-human behaviour at other
> humans. And as you say it; its wrong, so stop it.

You've gotten it backwards again, dumbass. I'm the one on defense here
remember? It's Attardi and, lately, mainly *you* directing "non-human"
behavior at *me*. (I think the technical term is "inhuman" actually,
although "psychotic" or just plain "evil" will do.)

Now please, Satan, go vanquish thyself as promised earlier. ;)
Tom Forsmo - 02 Dec 2006 04:25 GMT
> [compares me to satan]

Too right :D Just keeping it real you know...

> Well, at least you aim high, even if you keep mistakenly attacking the
> wrong target. He's THATaway, doofus!

Allmost funny, but still ill fated.

>> Im am sorry that it does not make any sense to you, but please let me
>> know in the future if you manage to make sense of it (its really not
[quoted text clipped - 3 lines]
> wrote it. Unfortunately, it came out a mangled mess and seemingly
> completely irrelevant here anyway.

Its easier to just avoid though questions like these, with sarcasm, isnt it?

>> Animals dont have feelings and abstract understanding as humans do, so
>> to them its not a matter whether its nice, it just a biological reflex
>> of how to react, in other words their nature.
>
> Yeah. So, what's *your* excuse?

human nature... what is yours?

> Now please, Satan, go vanquish thyself as promised earlier. ;)

after you... ladies first...

(i am having so much fun... :D how about you? want to go another round?)
Twisted - 02 Dec 2006 04:57 GMT
[snip a variety of largely nonsensical, mildly-insulting crud]

> > Yeah. So, what's *your* excuse?
>
> human nature... what is yours?

I don't need one. Unlike you, I'm not a vicious predatory sociopath.

Now either take this to e-mail or take it to /dev/null, your choice.
Tom Forsmo - 30 Nov 2006 00:57 GMT
>>>> I determined that the problem was a concurrency one and fixed it.
>>> No you didn't, you found that adding concurrency diminished the
[quoted text clipped - 20 lines]
>
> You love it.

or "you love it, you slag..."

Funny :)

>> If so, it's a damn lie...
>
> Obvious use of the strawman argument there. Your premise is false. I'm
> not attacking you, I'm having a pleasant conversation with you.

In fact, we are all having pleasant conversations... :)
Twisted - 30 Nov 2006 05:39 GMT
> In fact, we are all having pleasant conversations... :)

That's false. I, for one, am not. Now GO AWAY.
Tom Forsmo - 02 Dec 2006 02:03 GMT
>> In fact, we are all having pleasant conversations... :)
>
> That's false. I, for one, am not. Now GO AWAY.

Well, I was talking about you... I was talking about the rest of us.
Twisted - 02 Dec 2006 03:45 GMT
> >> In fact, we are all having pleasant conversations... :)
> >
> > That's false. I, for one, am not. Now GO AWAY.
>
> Well, I was talking about you... I was talking about the rest of us.

Well there's part of your problem. You're an inconsiderate prick, not
to mention you couldn't find your spellchecker with both hands and a
map. Now go away.
Tom Forsmo - 02 Dec 2006 03:56 GMT
>>>> In fact, we are all having pleasant conversations... :)
>>> That's false. I, for one, am not. Now GO AWAY.
[quoted text clipped - 3 lines]
> to mention you couldn't find your spellchecker with both hands and a
> map. Now go away.

I WILL NOT GO AWAY... :) how do you like them apples?
Joe Attardi - 29 Nov 2006 02:50 GMT
> Or hacking GG to make my replying spam random extra newsgroups and put
> me over Google's dumbass limit, for that matter? (Which activity you
> seem to have stopped, once I caught on to it and it thereby became
> futile.)

HAHAHAHAHAHAHA!!!!!
Twisted thinks that people in *this* thread are limiting his posts too?
Hacking Google Groups, what a laugh.
Oh Twisted. You make me laugh.
Twisted - 29 Nov 2006 11:58 GMT
Joe Retardi wrote:
> > Or hacking GG to make my replying spam random extra newsgroups and put
> > me over Google's dumbass limit, for that matter? (Which activity you
> > seem to have stopped, once I caught on to it and it thereby became
> > futile.)
>
> HAHAHAHAHAHAHA!!!!!

[Snip rest of similarly juvenile crap]

I thought you'd promised to shut the f.ck up? Oh, yes; for the 3rd or
4th time. It's not really surprising (disappointing, but not
surprising) to see you make a liar of yourself yet again. Asswipe.
Joe Attardi - 29 Nov 2006 15:07 GMT
> I thought you'd promised to shut the f.ck up? Oh, yes; for the 3rd or
> 4th time. It's not really surprising (disappointing, but not
> surprising) to see you make a liar of yourself yet again. Asswipe.
All right, tough guy. Way to completely dodge the issue yet again!
Twisted - 29 Nov 2006 16:36 GMT
> > I thought you'd promised to shut the f.ck up? Oh, yes; for the 3rd or
> > 4th time. It's not really surprising (disappointing, but not
> > surprising) to see you make a liar of yourself yet again. Asswipe.
> All right, tough guy. Way to completely dodge the issue yet again!

The only "issue" here is your belligerancy (and pathological lying);
the original Java-related problem is long gone.
Joe Attardi - 29 Nov 2006 21:57 GMT
> The only "issue" here is your belligerancy (and pathological lying);
> the original Java-related problem is long gone.
Belligerancy? Now you're making words up too.

I see your gift of exaggeration is alive and well. Pathological lying?
Saying you're done with a thread, then deciding you'd like to
participate again is not lying, let alone pathological. If I want to
get back involved with a conversation again, that's my right. So stop
your bitching and whining about pathological lying.

Now for ONCE can you not dodge the question and answer me this: Why
does the trend seem to be that once you get into a discussion on
Usenet, you quickly turn it into a heated argument where the original
topic is long-gone? If you claim that this isn't true, then it's you
that are lying.
Twisted - 30 Nov 2006 05:29 GMT
Joe Attacki strikes again:
> > The only "issue" here is your belligerancy (and pathological lying);
> > the original Java-related problem is long gone.
> Belligerancy? Now you're making words up too.

I'm not responsible for your lack of dictionary-foo. Now go sulk in a
corner for a while or something.

> If I want to get back involved with a conversation again, that's my right.

Not if your "involvement" is solely for the purpose of character
assassination, it isn't.

> Now for ONCE can you not dodge the question

You are not in any position to be asking me irrelevant,
non-Java-related questions. If you really really want to, use e-mail.

> and answer me this: Why
> does the trend seem to be that once you get into a discussion on
> Usenet, you quickly turn it into a heated argument where the original
> topic is long-gone? [snip calling me a liar]

Tell me sir, have you stopped beating your wife yet?

When you have a yes or no answer to that, I'll get back to you on your
question. Fair's fair.
Joe Attardi - 30 Nov 2006 06:26 GMT
> Joe Attacki strikes again:
Still intent on first-grade insults of my last name? OK.

> I'm not responsible for your lack of dictionary-foo. Now go sulk in a
> corner for a while or something.
Actually it is you who lacks dictionary skills. There is no such word.
Try "belligerence" or "belligerency".

>> If I want to get back involved with a conversation again, that's my right.
> Not if your "involvement" is solely for the purpose of character
> assassination, it isn't.
It's not character assassination. Either way, though, it actually is
still my right. Since this is an unmoderated public newsgroup, as you
have stressed to strongly before, anyone has the right to post
anything.

>Tell me sir, have you stopped beating your wife yet?
> When you have a yes or no answer to that, I'll get back to you on your
> question. Fair's fair.
Wait, what!? That is the most random question ever. What does spousal
abuse have to do with anything being discussed here? Besides, I'm not
married yet, so I don't have a wife to beat, nor will I once I am
married. Not sure what you were going for here, but you got your
answer, at least.
Twisted - 30 Nov 2006 17:57 GMT
[another fairly diverse assortment of insults]

Ah, the "broad-spectrum antibiotic" approach. Insult a whole variety of
different things about someone at once in the hope of finding at least
one vulnerable point. Unfortunately, when you are so juvenile about it
it doesn't work, as it's kind of like diluting that antibiotic to one
part in a million and still expecting it to kill anything.

Some specific rebuttals:

> It's not character assassination.

Liar.

> Either way, though, it actually is
> still my right. Since this is an unmoderated public newsgroup, as you
> have stressed to strongly before, anyone has the right to post
> anything.

The ability to, anyway. That doesn't mean some behavior isn't wrong,
such as:
* Intentionally being inflammatory
* Intentionally piloting a thread off-topic
* Character assassination attempts...

Funnily enough, by that measure you're guilty of virtually every crime
usenet has a law for (or what passes for law hereabouts, anyway).

> >Tell me sir, have you stopped beating your wife yet?
> > When you have a yes or no answer to that, I'll get back to you on your
> > question. Fair's fair.
> Wait, what!? That is the most random question ever.

No, actually, it is not. It's from a famous legal case in which a judge
was insisting that a witness answer "yes" or "no" to a loaded question
-- one where either answer admits to something.

Sneakily-worded questions are often used to try to get "facts" entered
into evidence without debate or proper review. And I was (somewhat
obscurely, I admit) calling you on your latest attempt to do so, in
which you asked a question that asked why I <something evil> and, in
the process, tried to sneak in a baseless claim *that* I <something
evil> under the radar.

In other words, "Nice try". :P
Joe Attardi - 30 Nov 2006 20:03 GMT
** Cracks knuckles and prepares for another round of this nonsense **

> Joe Attardi wrote:[another fairly diverse assortment of insults]
Now hang on. You want to talk about insults? You are taking my last
name and changing the spelling of it to try to make fun of me. That is
a childhood school-age style of insult. The fact that you continue to
do it pretty much nullifies any claims you have about being insulted
yourself.

> Ah, the "broad-spectrum antibiotic" approach. Insult a whole variety of
> different things about someone at once in the hope of finding at least
> one vulnerable point. Unfortunately, when you are so juvenile about it
> it doesn't work, as it's kind of like diluting that antibiotic to one
> part in a million and still expecting it to kill anything.
??! What are you talking about? You said I didn't have dictionary-foo
[sic] and I corrected you with how the word is actually spelled. What
does that have to do with "insult[ing] a whole variety of different
things about someone at once" ?

> Liar.
This seems to be what you say to something for which you have no
response or counter examples. When all else fails, just call the person
a liar, eh Twisted?

> * Intentionally being inflammatory
Twisted says:
 >>> "Joe Retardi"
 >>> "Go f.ck yourself"
 >>> "Fucktard!"
> * Intentionally piloting a thread off-topic
 Twisted says:
    >> "You are clinically insane"
> * Character assassination attempts...
 Twisted says:
    >> "Tell me sir, have you stopped beating your wife yet?"

My "double-standard" alarm has been tripped! You are guilty of
everything you are accusing others of. At least I have provided some
examples. Could you do the same? Oh yeah, you can't, because you
apparently use a single-threaded single-window browser in a
non-multitasking operating system.

> Funnily enough, by that measure you're guilty of virtually every crime
> usenet has a law for (or what passes for law hereabouts, anyway).
I'm sorry, usenet has laws or rules? Kind of hard for an unmoderated
forum don't you think? (Although at least you have good taste in
movies. [assuming that was a Matrix reference])

> Sneakily-worded questions are often used to try to get "facts" entered
> into evidence without debate or proper review. And I was (somewhat
> obscurely, I admit) calling you on your latest attempt to do so, in
> which you asked a question that asked why I <something evil> and, in
> the process, tried to sneak in a baseless claim *that* I <something
> evil> under the radar.
Are you convinced that this is some sort of courtroom drama?
Twisted - 30 Nov 2006 23:19 GMT
> ** Cracks knuckles and prepares for another round of this nonsense **

** Cocks gun and prepares to end this nonsense once and for all **

> > Joe Attardi wrote:[another fairly diverse assortment of insults]
> Now hang on. You want to talk about insults? You are taking my last
> name and changing the spelling of it to try to make fun of me.

You started it. Then when I land a blow you cry foul? If you're that
wimpy you shouldn't pick fights, moron!

> ??! What are you talking about? You said I didn't have dictionary-foo
> [sic] and I corrected you with how the word is actually spelled. What
> does that have to do with "insult[ing] a whole variety of different
> things about someone at once" ?

Your "correcting" me IS an insult, dweeb. I do not need "correcting".
Certainly not about either spelling or Java. Any suggestion at all to
the contrary is going to provoke a violently hostile reaction from me,
since it cannot be allowed to stand unchallenged. And it wasn't the
only insult I'd snipped in that batch, dumbass.

> > Liar.
> This seems to be what you say to something for which you have no
> response or counter examples.

No, it's what I say when someone lied and the thread history speaks for
itself. Oh yeah, but I forget, you seem to believe our mutual audience
(if anyone is even still paying attention to this nonsense) has an
average IQ in the teens and no memory to speak of, and everything has
to be cited like in some scholarly journal or something because
otherwise they'll have no chance of either remembering it on their own
or doing their own googling to find it. Right.

> > * Intentionally being inflammatory
>  Twisted says:[snip]

Doesn't count. I didn't do anything of the sort until the thread was
already in flames. It was one of you who put it into that state, not I.

> > * Intentionally piloting a thread off-topic
>   Twisted says:
>      >> "You are clinically insane"

The thread was already way off-topic long before then, dimbulb. Someone
else steered it there; I just found it like that.

> > * Character assassination attempts...
>   Twisted says:
>      >> "Tell me sir, have you stopped beating your wife yet?"

I explained that that was an example to show you that your stupid trick
of asking loaded questions a) actually is stupid and b) won't work, but
it sailed right over your head. I *did* forgot to adjust for your
substantially subnormal IQ; I freely admit this. In any event, since
you do recognize that asking such a loaded question constitutes a
character assassination attempt, you will hopefully now apologize for
your own loaded, character-attacking questions.

> My "double-standard" alarm has been tripped! You are guilty of
> everything you are accusing others of.

Wrong! See above. I didn't pilot anything off-topic; only found it
already adrift there. I didn't inflame the thread either; you did that.
And I didn't do anything of the sort *first*, but only when attacked
and provoked by a bunch of crazed howler monkeys given steroids and
internet access.

> > Sneakily-worded questions are often used to try to get "facts" entered
> > into evidence without debate or proper review. And I was (somewhat
[quoted text clipped - 3 lines]
> > evil> under the radar.
> Are you convinced that this is some sort of courtroom drama?

You're the one putting me on trial. You tell me whether it's a
courtroom drama or not. :P
vjg - 02 Dec 2006 05:12 GMT
<snip>

> No, it's what I say when someone lied and the thread history speaks for
> itself. Oh yeah, but I forget, you seem to believe our mutual audience
> (if anyone is even still paying attention to this nonsense) has an

I have to say that I read the whole thread because I was bored and had
nothing better to do for a little while. I also have to say that you're
nuts... let it go and walk away. Watch closely. This is how it's done.

- Virgil
Twisted - 02 Dec 2006 20:53 GMT
> <snip>
>
[quoted text clipped - 4 lines]
> I have to say that I read the whole thread because I was bored and had
> nothing better to do for a little while. I also have to say that [insult]

Whose hand is inside this sock? Anyone care to own up? :P
Tom Forsmo - 02 Dec 2006 01:48 GMT
> Some specific rebuttals:
>
>> It's not character assassination.
>
> Liar.

Liar liar pants on fire... thats what I used to say when i went to first
grade....

> The ability to, anyway. That doesn't mean some behavior isn't wrong,
> such as:
> * Intentionally being inflammatory
> * Intentionally piloting a thread off-topic
> * Character assassination attempts...

Exactly what you have been doing as well.

>>> Tell me sir, have you stopped beating your wife yet?
>>> When you have a yes or no answer to that, I'll get back to you on your
[quoted text clipped - 4 lines]
> was insisting that a witness answer "yes" or "no" to a loaded question
> -- one where either answer admits to something.

you do know that this only works in the movies? along with other
dramatical techniques such as "your honor, please allow me to treat this
witness as a hostile witness" and so on. In real life nobody can dictate
or limit what a witness may answer, the witness may even refuse to
answer (of course in some cases refusing to answer, can lead to
imprisonment, but they can not force you to answer).
Twisted - 02 Dec 2006 03:19 GMT
[snip some idiocy]
> > The ability to, anyway. That doesn't mean some behavior isn't wrong,
> > such as:
[quoted text clipped - 3 lines]
>
> Exactly what you have been doing as well.

Wrong. I didn't inflame the thread; I just found it that way one day. I
didn't pilot it off topic either; again I just found it that way. And
I'm not the one assassinating here; I'm the one defending!

[snip even further offtopic asides]
John W. Kennedy - 02 Dec 2006 03:31 GMT
 > you do know that this only works in the movies? along with other
> dramatical techniques such as "your honor, please allow me to treat this
> witness as a hostile witness" and so on.

In the US (generally):

A witness called by the other side is presumed to be a hostile witness.

A witness called by your side can be ruled a hostile witness by the
judge, though it happens far less often in real life than in drama (in
general, you don't /want/ to call a hostile witness).

A hostile witness may be asked leading questions.

(See rule 611c of Federal procedure.)

The often-encountered "Answer 'yes' or 'no'" is not established by
Federal procedure, as such, but could certainly be interpreted as being
allowed, at need, under rule 611a, which essentially allows the judge to
do whatever needs to be done to get witness interrogation done
efficiently, and in a timely manner.

Signature

John W. Kennedy
"The blind rulers of Logres
Nourished the land on a fallacy of rational virtue."
  -- Charles Williams.  "Taliessin through Logres: Prelude"

Tom Forsmo - 02 Dec 2006 03:52 GMT
> A hostile witness may be asked leading questions.
>
[quoted text clipped - 3 lines]
> do whatever needs to be done to get witness interrogation done
> efficiently, and in a timely manner.

Even though, the judge can not dictate which answer the witness can
give. then its not the witnesses answer any more but the judges or the
attorney. If a witness wants to say "Its not that simple" to a question
that someone would prefer a yes or no answer to, a judge can not
disallow such an answer or instruct the witness to only say yes or no...
If he could then justice would be hollow. A judge could then start
instructing the witnesses to answer what he or the prosecutor wants him
to answer, that's not democracy or rule of law, its fascism.
A judge can instruct a witness to answer, but can not tell him what the
answer should be.

tom
Chris Uppal - 02 Dec 2006 16:40 GMT
> Even though, the judge can not dictate which answer the witness can
> give. then its not the witnesses answer any more but the judges or the
> attorney. If a witness wants to say "Its not that simple" to a question
> that someone would prefer a yes or no answer to, a judge can not
> disallow such an answer or instruct the witness to only say yes or no...
> If he could then justice would be hollow.

Not necessarily -- not at all, one would hope.  There are two (classes of)
reasons why a witness might not want to give a straightforward answer to an
apparently straightforward question.  One is that the matter is not actually as
straightforward as it appears; the other is t