Start by proofing the yeast in the warm milk for 10-15 minutes, or until bubbly. This ensures the yeast is active. Whisk in the granulated sugar, 1/4 cup softened butter, salt, and egg. Stir in the flour until the dough begins to come together into a shaggy mass.
Transfer the dough to a floured surface and knead it for a few minutes, until smooth and elastic. Place the dough into a greased bowl, cover, and let rise in a warm place until doubled in size, about 1 to 1.5 hours. I like to lightly oil the bowl to prevent sticking and promote even rising.
Punch the dough down and knead a few more times to remove air bubbles. In a separate bowl, mix the brown sugar and ground cinnamon together to make the cinnamon-sugar mixture. Roll the dough out into a 10x18 inch rectangle. Spread 4 tablespoons of softened butter evenly over the surface. Sprinkle the cinnamon-sugar mixture, then add the crushed graham crackers, mini chocolate chips, and mini marshmallows over the buttered dough.
Roll up the dough tightly, starting from the short edge, to form a log. Using a sharp knife or thread, cut the log into 8 or 9 equal pieces. Arrange the rolls in a greased 10-inch baking pan with a little space between them. Bake in a preheated oven at 375°F (190°C) for 15-16 minutes, or until the tops are golden brown. Remove from the oven and allow to cool slightly while preparing the frosting. I sometimes tent the rolls with foil if they start to brown too quickly to keep them extra soft.
To prepare the frosting, beat together 1/4 cup softened butter and the cream cheese until smooth and creamy. Stir in vanilla extract, powdered sugar, and 2 to 4 tablespoons of milk (adding just enough milk to achieve your desired frosting consistency). For an extra touch, I like to add a pinch of salt to the frosting if you enjoy a more balanced flavor.
Spread the prepared frosting generously over the slightly warm rolls. Allow the frosting to melt slightly into the rolls before serving for the best gooey texture. Serve warm and enjoy!