2011-11-29 72 views
1

我已经通过apt安装mono-runtime,以便通过SSH在Ubuntu上运行我的Mono控制台应用程序。但是,当我运行命令mono myapp.exe时,它退出,没有消息,我的程序什么都不做。Mono 2.10.5 Ubuntu 11.10(可能是log4net?)的运行时错误

如果我扔-v切换为单声道,如mono -v myapp.exe,我得到约10K的输出线(如预期,-v是详细),与前几行是:

converting method System.OutOfMemoryException:.ctor (string) 
Method System.OutOfMemoryException:.ctor (string) emitted at 0xb7052c28 to 0xb7052c4b (code length 35) [myapp.exe] 
converting method (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object  (object,intptr,intptr,intptr) 
Method (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr) emitted at 0xb7052c68 to 0xb7052cf6 (code length 142)  [myapp.exe] 
converting method System.SystemException:.ctor (string) 

(Full Verbose Output)

我读到这个作为抛出OutOfMemory异常的运行时间,但机器没有高强度负载,有足够的可用RAM,并且除了系统进程以外没有其他任何运行。

我已经删除并重新安装了无数次单声道,甚至可以在其他机器上运行可执行文件。

我在这里错过了一些完全明显的东西吗?

编辑:这里

每@lupus的回答,是log4net的内部发生的事情的转储。我看不出什么错:

log4net: log4net assembly [log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]. Loaded from  [/mnt/ebs/911dispatch/scrapers/WA/Seattle/log4net.dll]. (.NET Runtime [4.0.30319.1] on Unix 3.0.0.12) 
log4net: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository for assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] 
log4net: Assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [/mnt/ebs/911dispatch/scrapers/WA/Seattle/Seattle911.Backend.Scraper.exe] 
log4net: Assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. 
log4net: Assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository for assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] 
log4net: Assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [/mnt/ebs/911dispatch/scrapers/WA/Seattle/Seattle911.DAL.dll] 
log4net: Assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. 
log4net: Assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: repository [log4net-default-repository] already exists,  using repository type [log4net.Repository.Hierarchy.Hierarchy]log4net: Shutdown called on Hierarchy [log4net-default-repository] 

回答

1

你正在使用一个日志框架,将调用Environment.Exit致命错误(这似乎是一个连接错误的postgres数据库,可能是不正确的地址/端口或错误配置的服务器?)。

您应该将log4net配置为不执行该操作,或者检查它将日志放入应用程序所点击的确切错误并更正它的位置。

+0

如果是这样的话,其他系统上的症状是否也会发生?我使用的log4net配置文件在所有机器上都是一样的 – johnluetke

+0

其他服务器可能有权访问数据库,而这可能不是(默认安装postgres通常只允许从本地主机访问)。 – lupus

+0

..很高兴..我要粉笔这一张,以阻滞 – johnluetke

2

OutOfMemoryException你看到的是初始化单声道运行时总是分配。

为什么?因为如果(当)的OutOfMemoryException实例只需要这将是一个坏的时候要尽量分配一个:-)

督察,这是完全正常的,因为它只是缓存的使用,如果需要的话,以后。可悲的是,这意味着你的真正的错误是在别处。

+1

感谢您的洞察力,我甚至没有想过预先分配。 我会继续浏览输出。如果其他人很好奇,我已经编辑了这个问题以包含输出的转储 – johnluetke