Somewhere, a roof is unhappy. Most likely, the angles of nearby roof edges are causing the geometry to turn inside out. The report will say something like:
Invalid polygon, self intersection or hole intersects boundary. (Roof 004)
This is actually helpful! Use find and select to find a roof with that ID, and you can fix it. The trouble is that you probably have a lot of roofs with identical IDs, and you can't tell which of the n roofs is the problem.
If the IDs were unique, the report would lead directly to the bad guy. So you need to change the IDs of all the Roof 004 elements. You certainly can do this one at a time, and it will work.
Instead, use an Element Schedule to isolate the roofs, and correct the IDs.
Make a new schedule (Document -> Schedules and Lists -> Schedules -> Scheme Settings; Create New). The criteria:
For the fields, you just need 'ID', from the General heading:
This will give a schedule with all the roofs whose ID is not blank:
Make sure the 'Uniform Items' checkbox is off. If it's on, you'll get one line item for Roof 004, regardless of how many there are, defeating the purpose.
Now all you have to do is change all (but one) of the Roof 004 items to something unique. You can use numbers in the same pattern, as long as they aren't used elsewhere in the schedule, or you can add a, b, c, or something to the IDs.
Next time you run the 3D, section, or elevation window, you'll get the report again, but this time you can use the ID to find the specific element.