Extruded rectangle boolean operator acting strange I have a rectangle from an SVG that is extruded into a cube. The missing faces are added. All this from a small script:

bpy.ops.object.select_all(action='SELECT')
bpy.ops.import_curve.svg(filepath = file_outline)
newcurves = [c for c in bpy.context.scene.objects if not c.select]
bpy.ops.object.select_all(action='DESELECT')
for c in newcurves:
    c.select = True

bpy.context.scene.objects.active = newcurves[0]
bpy.ops.object.join()
curve = bpy.context.object
curve.scale = [28.888, 28.888, 1]
bpy.ops.object.convert(target='MESH')
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.remove_doubles()

bpy.ops.mesh.extrude_edges_move(
    TRANSFORM_OT_translate={
        "value": (0, 0, 1.6)
    }
)

bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.edge_face_add()
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)


Now when I create (manually in the GUI) a cylinder and place it within the cube, then add a boolean DIFFEERENCE modifier to the cube (to make a hole in the cube) the strangest thing happens:



The top face has a hole in it. The bottom face has an outline of the cylinder added to it. 

Now, if I stop my script just before the extrude and then do the extrude manually, then continue the script (copy and paste in the console) I can then do the boolean operation fine. 

So I figure there is something wrong with my extrude command. So I grab the command from the info panel that worked when doing it manually and pasted that into my script instead. The results are identical - the boolean fails miserably.

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 1.6), "constraint_axis":(False, False, True), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False})


This same script I have been using on a more complex path quite happily with no issues. But as soon as I use this much simpler SVG it croaks rather nastilly.

Is this a bug in the boolean modifier (I am on 2.77 on Ubuntu) or something in my script that is breaking the boolean's ability to do its job?

The generated cube can be downloaded here.
It turns out this is a bug in 2.77. Upgrading to 2.78a seems to fix the problem.

However that now has introduced a new bug whereby my mouse keeps jumping to the wrong monitor when I release the middle button after moving around in the 3D view. Very annoying.