3

これを機能させるために何時間も試みた後、私は投稿する時が来たと判断しました。

私は非常に基本的なC#Windowsフォームアプリケーションを持っており、それを遵守してWindows上で正常に実行できます。ただし、プロジェクト全体がPiで動作するように設計されているため、プロジェクトをPiに移動してコンパイルしました。最終的にコンパイルするために数時間後(MySql.Data.dllファイルを参照する必要がありました)、エラーなしでコンパイルされました!

しかし、私は実行します

Mono Administration.exe

そして私はこの巨大なエラーを受け取りました、それは私がオンラインについてほとんど見つけることができません:

pi@raspberrypi /media/WAYNEIO/pi/ProjectNibiru/ProjectNibiru $ mono Administration.exe
Stacktrace:

  at System.Drawing.Font.CreateFont (string,single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,byte,bool) <0x00143>
  at System.Drawing.Font..ctor (string,single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,byte,bool) <0x0007f>
  at System.Drawing.Font..ctor (string,single,string) <0x00057>
  at (wrapper remoting-invoke-with-check) System.Drawing.Font..ctor (string,single,string) <0xffffffff>
  at System.Drawing.SystemFonts.get_DefaultFont () <0x00073>
  at System.Windows.Forms.Theme..ctor () <0x0002f>
  at System.Windows.Forms.ThemeWin32Classic..ctor () <0x00013>
  at System.Windows.Forms.ThemeVisualStyles..ctor () <0x00013>
  at System.Windows.Forms.ThemeEngine..cctor () <0x0007f>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
  at System.Windows.Forms.X11DesktopColors..cctor () <0x000bb>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
  at System.Windows.Forms.XplatUIX11..ctor () <0x001af>
  at System.Windows.Forms.XplatUIX11.GetInstance () <0x00073>
  at System.Windows.Forms.XplatUI..cctor () <0x00157>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
  at System.Windows.Forms.Application.EnableVisualStyles () <0x00023>
  at ProjectNibiru.Program.Main () <0x0000b>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:


Debug info from gdb:

Cannot access memory at address 0x0
Cannot access memory at address 0x0
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0x4093b460 (LWP 2224)]
0x40085f30 in read () from /lib/arm-linux-gnueabihf/libpthread.so.0
  Id   Target Id         Frame
  2    Thread 0x4093b460 (LWP 2224) "mono" 0x40084d84 in sem_wait@@GLIBC_2.4 () from /lib/arm-linux-gnueabihf/libpthread.so.0
* 1    Thread 0x400cd000 (LWP 2223) "mono" 0x40085f30 in read () from /lib/arm-linux-gnueabihf/libpthread.so.0

Thread 2 (Thread 0x4093b460 (LWP 2224)):
#0  0x40084d84 in sem_wait@@GLIBC_2.4 () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1  0x00195a40 in mono_sem_wait ()
#2  0x000ea384 in ?? ()
#3  0x000ea384 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 1 (Thread 0x400cd000 (LWP 2223)):
#0  0x40085f30 in read () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1  0x40085770 in __pthread_enable_asynccancel () from /lib/arm-linux-gnueabihf/libpthread.so.0
#2  0x00000000 in ?? ()

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

Aborted

なぜこれが表示されるのか、問題を解決する方法について誰かがアドバイスを提供できますか?

注意事項; これは、「Xbuild」または「dmcs」でコンパイルするか、Windowsでコンパイルしてコピーしたかに関係なく発生します。また、基本的なhello worldスクリプトのコンパイルは正常に機能するため、おそらくWindows.FormsまたはMySql.Dataを使用する必要があります。また、PIはDebianを実行しています。

4

2 に答える 2

2

あなたの質問をもっと注意深く読んだ後、それは特定のセグメンテーション違反が言っていることがわかりますCannot access memory at address 0x0、それでおそらくエラーのために返されたポインタにアクセスしました。たとえば、プログラムがフォントXへのハンドルを要求し、関数が何らかの理由でnullポインタを返しました。あなたが試すことができるいくつかの可能な解決策:

  • ソースからモノラルをコンパイルし、失敗した関数の近くにブレークポイントを作成し、変数値を観察しながらステップします。おそらく、何かを教えてくれるでしょう。
  • まだインストールmono-completeしていない場合は、パッケージをインストールします。
  • このアプリケーションで使用されるフォントをインストールしてみてください(ただし、スタックトレースから、アプリがデフォルトのフォントを探していることがわかります;))

また、ソースを見ることができます。興味深い部分はおそらく次のとおりです。

古い答え:

ここでは詳細はあまりありませんが、Windowsフォームアプリケーションでセグメンテーション違反が発生した場合、最初の推測では、一部のUIコントロールは別のUIスレッドからアクセスされます。多くの場合、同じアプリケーションがWindowsフォームのMS実装でクラッシュすることはありませんが、それでもこのアプローチは正しくありません。多分それはあなたの問題ですか?

エラーのその他の考えられる理由のリストには、Monoバグ(バージョン番号を教えてください)またはサードパーティのネイティブライブラリのバグ(使用されている場合)が含まれます。後者の場合、GDBを使用することは確かに価値があります(以前は、g3などのいくつかのデバッグオプションを使用してこれらのライブラリをコンパイルしていました)。ガベージコレクターによって送信された信号に邪魔されないようにするには、発行することを忘れないでください

handle SIGXCPU SIG33 SIG35 SIGPWR nostop noprint

GDBセッション中。

于 2012-11-26T10:16:31.517 に答える
1

これに対する答えは、monoの最新バージョンに更新し、soft-floatdebianで実行されていることを確認することです。

このスレッドに従って答えが見つかりましたhttp://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=11634

于 2012-12-15T11:16:10.033 に答える