Skip to content

Fix stack trace parsing for error messages containing "in"#69

Closed
scomitch wants to merge 139 commits intoFacepunch:masterfrom
scomitch:feature/fix-regex
Closed

Fix stack trace parsing for error messages containing "in"#69
scomitch wants to merge 139 commits intoFacepunch:masterfrom
scomitch:feature/fix-regex

Conversation

@scomitch
Copy link
Copy Markdown

@scomitch scomitch commented Nov 29, 2025

Summary

Clicking on certain compile errors in the console fails with "Couldn't resolve relative path" when trying to open them in the editor.

Cause

Non-greedy matching issue, so any error message with the word "in" in it, breaks the flow and parses the wrong path when going to open the editor.

Fix

Update the regex to actually require the path to be absolute.

Screenshots

(Before fix)
image

(After fix)
image

sboxbot and others added 30 commits November 24, 2025 09:05
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
…cene.PhysicsWorld (Facepunch#3433)

Resolves Facepunch/sbox-issues#9598 (Fixes issues where traces in the editor can throw NREs after exiting play mode)
* Skip menu editor code outside of the menu project
* Asset Browser: skip menu project assets in Everything and Recents
Add slight delay because windows may still briefly hold a lock on some files even after the process exited
* Refactor sync script

Use single filter repo call
Use globs instead of python madness
Ensure shallow clone is clean before working on it

* Add dry run option to sync script
* Add public gitattributes
* Fix leaky swapchain when resizing on game mode and dispose of handle after usage
VideoRecorder would get a strong handle copy of the swapchain every frame and retain it, causing native to fail to shutdown the copies from it
Made usage of getting native swapchain consistent on managed on other stuff, doing it like this ensures GC properly disposes of the strong handles even not disposing explicitly

Remove now unused ScreenRecorder.def and ScreenshotService.def

There are still optimizations to swapchain I'd like to send on another commit, game is allocating way more swapchains than needed even without the leak, has two completely different paths depending if you are MSAA or not, this can all be much simpler
https://files.facepunch.com/sampavlovic/1b1811b1/EjDyxbTahs.png

* Remove NativeLayerRenderTarget, was unused and fucked

* Keep it as an ITexture/HRenderTextureStrong in managed so we avoid IDisposable, ReadTextureAsync with ITexture
…h#3449)

* Support instanced tint on Blendable and Material::From( i )

Blendable supports vertex tint color, but was initially intended for world geometry so there was no point in working with instance color, now works fine

https://files.facepunch.com/sampavlovic/1b2611b1/sbox-dev_qkWlvBOXW8.png

* Build shaders
* More robust downloading of artifacts

Don't download to a temp file first
Try to retry download up to 3 times, if it fails
Fail Bootstrap if any download fails

* Fix contentbuilder and shadercompiler not forwarding to stdout
…eleted

Move filter implementation to python so we have more flexibility when implementing filters.
Make sure deleted files are properly filtered by evaluating globs in the filter itself not before.
Make sure deleted LFS files are accounted for by scanning the history of the shallow clone for delete/changed lfs files.
Whitelist some additional shaders.
* Fix terrain seams and optimize

Overlap LODs by one step to fix holes in LOD transitions
Reuse vertices that exist on same key when building diamond square

https://files.facepunch.com/sampavlovic/1b2411b1/8mb.video-eW2-tNb22a60.mp4

* Add NoTile class and make terrain use it
https://files.facepunch.com/sampavlovic/1b2411b1/sbox-dev_R1FwUmLhvu.mp4
https://files.facepunch.com/sampavlovic/1b2411b1/sbox-dev_YhKyIwvhve.mp4

* Sure why not Mr. Robot
* SceneEditorSession: make game vs editor scenes more distinct, Scene is whichever is currently active

* Route prefab update, model reload etc events to both scenes if needed

* SceneTree update checking a bit cleaner

* Bring back GameEditorSessions instead, so undo, selection etc can all be linked 1:1 with scenes again

* tweak and tidy
sampavlovic and others added 10 commits December 3, 2025 16:41
* Make MSAA setting work on editor SceneRenderingWidgets

MSAA settings never worked with editor viewport, only on game tab, now with playmode it always takes highest MSAA value from hardware regardless of what

Two things from this PR:
* Pass current engine MSAA setting when creating SceneRenderingWidget swapchain
* Add callback when video settings are changed, recreate swapchain when so

Replicates fine for all SceneRenderingWidgets, applies instantly

https://files.facepunch.com/sampavlovic/1b0311b1/sbox-dev_bjEMrrYe71.mp4

* Push RenderMultisampleType_t nMSAAAmount on interop
* Fix debug overlay text not rendering

* Moved transform init out of native block and improved comment for clarity

---------

Co-authored-by: Andy <10728824+andy013@users.noreply.github.com>
Terrain_SampleSeamlessUV now additionally returns a 2x2 rotation matrix which can be used to transform vectors and other data if necessary.

This also adds a function overload `Terrain_SampleSeamlessUV( float2 uv )` for cases when you don't need a rotation matrix. This will avoid breaking any shaders that rely on old implementation of this function
Previous implementation of seamless UV was sampling tangent normal map 'as is', without transforming vectors to be inline with the UV rotation angle - which resulted into NdotL shading errors. This is now corrected and tangent vector accounts for UV rotation.
@Metapyziks
Copy link
Copy Markdown
Contributor

Makes sense, I'll see if it's feasible to add tests for this

@Metapyziks Metapyziks self-requested a review December 5, 2025 09:57
Copy link
Copy Markdown
Contributor

@Metapyziks Metapyziks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add some tests in Sandbox.Test/Editor/StackTrace.cs like this:

using System.Reflection;
using System.Text.RegularExpressions;
using Editor;

namespace TestEditor;

[TestClass]
public class StackTraceTests
{
	[TestMethod]
	[DataRow( @"at Example.Foo() in C:\sbox\Source.cs:line 123", true )]
	[DataRow( @"cat Example.Foo() in C:\sbox\Source.cs:line 123", false )]
	[DataRow( @"at Error in something in C:\sbox\Source.cs:line 123", false )]
	public void DefaultStackLine( string line, bool expectMatch )
	{
		var isMatch = GetDefaultStackLineHandlerRegex().Match( line );

		Assert.AreEqual( expectMatch, isMatch.Success );
	}

	private Regex GetDefaultStackLineHandlerRegex()
	{
		var method = typeof( StackTraceProperty ).GetMethod( nameof( StackTraceProperty.DefaultStackLineHandler ), BindingFlags.Static | BindingFlags.Public )!;

		return new Regex( method.GetCustomAttribute<StackLineHandlerAttribute>()!.Regex );
	}
}

Nolankicks and others added 6 commits December 5, 2025 11:41
Categorizes PostProcessVolume, Terrain, and MoviePlayer.
…eo changed (Facepunch#3562)

Recreating it works fine on Intel GPU, no issues on validation but didnt work on other cards, there is a better way to do this from native without dangling around

Fixes https://github.com/Facepunch/sbox-issues/issues/9675
- Now supports drawing on a BaseLayer and OverlayLayer
- Terrain Tools displays a material palette in a sidebar
- Added C# API to sample terrain material at a given position
- Can now import multiple splatmaps at once mapping to texture indices ( [0, 3], [4, 7], etc.)

https://files.facepunch.com/antopilo/1b0511b1/sbox-dev_An6nbxpqe3.mp4
@scomitch scomitch force-pushed the feature/fix-regex branch 2 times, most recently from a9e69f8 to 780d9fa Compare December 5, 2025 19:37
@scomitch
Copy link
Copy Markdown
Author

scomitch commented Dec 5, 2025

Will get the build passed after this weekend, traveling and using a hellfire that is the macbook so wont be fixed until i get home

@Metapyziks
Copy link
Copy Markdown
Contributor

No worries, thanks for your help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.