Bug 28876

Summary: Satellite assembly finder fails for memory-loaded assemblies with GetDirectoryName(): Invalid path
Product: [Mono] Runtime Reporter: Gabriel Garcia <gbrlgrct>
Component: ReflectionAssignee: Marek Safar <masafa>
Status: RESOLVED FIXED    
Severity: major CC: masafa, miguel, mono-bugs+runtime
Priority: High    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Tags: Is this bug a regression?: ---
Last known good build:
Attachments: Test case from the previous github url, so we can keep the test case here

Description Gabriel Garcia 2015-04-08 00:19:25 UTC
Assembly.get_location() returns an empty string for assemblies loaded from memory.

Assembly.InternalGetSatelliteAssembly uses that location string directly in a call to Path.GetDirectoryName, which then fails with: System.ArgumentException: Invalid path

This is unexpected behavior.



** Test case **

https://github.com/Garciat/dnx-mono-resources-bug
Comment 1 Miguel de Icaza [MSFT] 2015-04-10 22:08:38 UTC
Created attachment 10722 [details]
Test case from the previous github url, so we can keep the test case here
Comment 2 Miguel de Icaza [MSFT] 2015-04-10 22:13:25 UTC
At least my Mono version d86446f from April 2nd has this problem.

It is more likely caused by a recent change in resource lookup:

52003dc6f73976aa422804ea4a3761bb2bfb5e9a

From March 23rd
Comment 3 Gabriel Garcia 2015-04-11 07:52:59 UTC
I sent a PR that fixes this bug (I forgot to link it here): https://github.com/mono/mono/pull/1693

As stated in the PR description, I'm not sure if this is a sensible solution to the problem. I.e. if it follows reference .NET behavior.
Comment 4 Marek Safar 2015-04-15 04:51:17 UTC
Fixed in master