Blender crashes when running custom operator EXCEPTION_ACCESS_VIOLATION
Kinda hard to answer this q in it's given format. As pointed out by @RayMairlot you are using property definitions incorrectly which is very a likely cause of your woes, possibly with the list bpy.types.Scene.hidden_objects, especially if you have removed (deleted) an object that is in the list prior to accessing it again.

When using bpy.props to assign properties to classes registered with Blender for example you assign the is_isolation_mode property to the Scene class.

bpy.types.Scene.is_isolation_mode = bpy.props.BoolProperty(default=False)


And access on each instance of the class, eg bpy.context.scene , bpy.data.scenes["Scene"] etc.

And definitely NOT by doing this

bpy.types.Scene.is_isolation_mode = False


which assigns false to is_isolation_mode for all instances and cannot be altered from the instance. Toggling above to true makes it true for all instances, which is not what you want.  Example code below from the console.

&gt;&gt;&gt; C.scene.is_isolation_mode
False

&gt;&gt;&gt; C.scene.is_isolation_mode = True
Traceback (most recent call last):
  File "&lt;blender_console&gt;", line 1, in &lt;module&gt;
AttributeError: 'Scene' object attribute 'is_isolation_mode' is read-only


Suggested Alternative Method

A suggested solution to having a pseudo-local mode is using an update method on the is_isolation_mode property assigned to the scene object. 

Example code: when in isolation mode all visible objects, except the context object, are hidden and given an "isolation_mode" ID property.  They are unhidden and the prop is removed when not in iso mode.

import bpy
from bpy.props import BoolProperty

def hide_mode(scene, context): # standard to use self here to show it's a prop
    if scene.is_isolation_mode: # scene is also context.scene
        obs = [o for o in scene.objects if not o.hide and o != scene.objects.active]
        for o in obs:
            o["isolation_mode"] = 1 # could be anything (bool, int, float, string)
            o.hide = True
    else:
        obs = [o for o in scene.objects if o.get("isolation_mode")]
        for o in obs:
            del(o["isolation_mode"])
            o.hide = False
    return None

bpy.types.Scene.is_isolation_mode = BoolProperty(default=False,
                                                 name="Isolation Mode",
                                                 description="Blah Blah",
                                                 update=hide_mode)

# prepend a toggle button on 3Dview header

def draw_toggle(self, context):
    scene = context.scene
    layout = self.layout
    layout.prop(scene,
                "is_isolation_mode",
                toggle=True)

bpy.types.VIEW3D_HT_header.prepend(draw_toggle)


Toggle button on 3D header

Set via script in python console.