Slice is so weird. Here are a few things I've discovered about Slicing.
Interestingly, you can Slice anything. You do not have to have multiple objects to perform a slice.
So what? Well, most of the slice problems I've run into arise from messed up object geometry. For instance, say you want to use boolean functions to create a complex object, *NEVER* Join and Merge objects you want to later Slice. It doesn't create sliceable geometry, always Slice objects together and then Merge, this usually insures good geometry.
To find out whether an object will perform well under a Slice, perform Slice on the single object itself, if you get errors the object will not Slice well in the future.
If that single object actually separates into multiple parts it means the object didn't have continuous geometry to begin with. Usually because of duplicate points. It probably won't slice well in the future.
Here's an example. Slice a primitive sphere, it should result in one sphere.
Now take two spheres, Join and Merge them and Slice. You'd think it would act like a single object. It should Slice to itself. If you do not get an error you'll get multiple objects proving that the object geometry was bad.
In any case you must fix the geometry. If your object errors you are fairly screwed unless you have a saved copy of the object with good geometry (i.e. an object saved before a function messed with its geometry).
If your object splits into multiple objects you must Merge those objects to create continuous geometry. Here's where I'm not sure what is really true. Can someone confirm this?
If you Merge an object duplicate points are not erradicated, if you Merge an object in Points Mode duplicate points WILL be erradicated. Is this true? If so, then to Join Sliced objects you should Merge objects AND points.
So, as advice try Slicing each individual object to be sliced. Make sure those are okay. If they are, Slice 'em. Merge (or Join and Merge) the resulting objects/parts the way you want (deleting unneccesary parts), and Slice the new object. If THAT'S okay then the next Slice should work.
I've gotten into the habit of testing the 'Sliceability' of every object I will Slice and every object I have Sliced. I rarely run into problems.
The one downside to Slicing everything (as opposed to just Joining) is that your poly count goes way up.
Imagine does need a better Slice/Boolean function...
Of course, if it's an edge to close to an edge problem you could just offset one of the objects to be sliced slightly...
Hope some of this helps...