Boolean difference failure

I have had this problem several times now. Mostly Boolean difference works fine but sometimes it doesn’t and I can’t see a reason.

On this occasion I’m trying to make a ring shank out of D-shaped wire and so I have made a ring of pipe and am slicing the inner half of the pipe away with a central tube that is an extrusion from a circle, but it won’t work and it’s not saying anything other than “Boolean difference failed.”

I tried slicing the ring in half (into semi circles) and it then worked on one half but not the other, I really don’t understand whats wrong.

The highlighted solid is the cutting tool

Hi Fenwick - use SrfSeam to move the pipe’s seam out away from the cylinder - as is it looks like the seam lies right on the cylinder.

But, this might be easier as a Revolve of a line with a semi-circle spliced in.