2012-05-12 10 views
2

私はQubu 4.11のプログラム(http://code.google.com/p/image-feature-detector/)をKubuntu 12.04でコーディングしています(ただし、Kubuntu 11.10でも同様です)。コンパイルされた実行可能ファイルを実行しようとすると狂ったエラーが発生します。プログラムは完全にコンパイルされて実行されましたが、突然、ある日、適切なコンパイル後に実行しようとしたときにこのエラーが発生しました。エラー/ var/tmp/kdecacheはuid0の代わりにuid1000が所有しています

これは私がsudoで実行可能ファイルを実行する場合、私が得たものです:

error /var/tmp/kdecache-myuser is owned by uid 1000 instead of uid 0 

私はsudoなしで実行可能ファイルを実行した場合、私が取得:

Segmentation fault (core dumped) 

そして、私はkdesudoで実行可能ファイルを実行した場合、後パスワードの入力を促すウィンドウが表示されても何も起こりません。

私はプログラムをデバッグする場合、デバッグはNetBeansは私を示し、プログラムのこの解体部分の2行目では、ソースコードの任意の行に到達する前に停止します。

_ZN15QAbstractButton10setCheckedEb() 
Stops here->_ZN15QAbstractButton10setCheckedEb+22: mov 0x8(%rdi),%rbp 
_ZN15QAbstractButton10setCheckedEb+26: mov %esi,%r12d 
_ZN15QAbstractButton10setCheckedEb+29: movzbl 0x214(%rbp),%eax 
_ZN15QAbstractButton10setCheckedEb+36: test $0x1,%al 
_ZN15QAbstractButton10setCheckedEb+38: je  0x7ffff74a10d0 <_ZN15QAbstractButton10setCheckedEb+192> 
_ZN15QAbstractButton10setCheckedEb+44: mov %eax,%edx 
_ZN15QAbstractButton10setCheckedEb+46: shr %dl 
_ZN15QAbstractButton10setCheckedEb+48: and $0x1,%edx 
_ZN15QAbstractButton10setCheckedEb+51: cmp %sil,%dl 
_ZN15QAbstractButton10setCheckedEb+54: je  0x7ffff74a10d0 <_ZN15QAbstractButton10setCheckedEb+192> 
_ZN15QAbstractButton10setCheckedEb+60: test %sil,%sil 
_ZN15QAbstractButton10setCheckedEb+63: je  0x7ffff74a1100 <_ZN15QAbstractButton10setCheckedEb+240> 
_ZN15QAbstractButton10setCheckedEb+69: mov %rsp,%rdi 
_ZN15QAbstractButton10setCheckedEb+72: mov %rbx,(%rsp) 
_ZN15QAbstractButton10setCheckedEb+76: callq 0x7ffff70bd220 <[email protected]> 
_ZN15QAbstractButton10setCheckedEb+81: movzbl 0x214(%rbp),%eax 
_ZN15QAbstractButton10setCheckedEb+88: mov %r12d,%edx 
_ZN15QAbstractButton10setCheckedEb+91: and $0x1,%edx 
_ZN15QAbstractButton10setCheckedEb+94: add %edx,%edx 
_ZN15QAbstractButton10setCheckedEb+96: and $0xfffffffd,%eax 
_ZN15QAbstractButton10setCheckedEb+99: or  %edx,%eax 
_ZN15QAbstractButton10setCheckedEb+101: test $0x20,%al 
_ZN15QAbstractButton10setCheckedEb+103: mov %al,0x214(%rbp) 
_ZN15QAbstractButton10setCheckedEb+109: je  0x7ffff74a10e8 <_ZN15QAbstractButton10setCheckedEb+216> 
_ZN15QAbstractButton10setCheckedEb+111: mov %rbp,%rdi 
_ZN15QAbstractButton10setCheckedEb+114: callq 0x7ffff749f9f0 
_ZN15QAbstractButton10setCheckedEb+119: cmpq $0x0,(%rsp) 

私が所有権を実験し、変更/var/tmp/kdecache-myuser/~root(uid0)である。その後私は実行ファイルをsudoで実行し、sudoを使わずにプログラムを実行すると "Segmetation fault"というエラーが出ます。さらに、元の/var/tmp/kdecache-myuser/フォルダのアクセス許可を変更すると、新しい/var/tmp/kdecache-looksLikeMd5Number/フォルダがmyuser権限で作成されます。

このエラーをどのように解決して私を狂わせてしまうのか、何かお勧めします。

+0

ええと、これはヌルを指すポインタと関連している必要があると思います。 – AxeEffect

+0

私の返信を参照してください少なくともなぜこれの一部( "エラー:"/var/tmp/kdecache-computeruser "uid 0の代わりにuid 1000が所有しています")はあなたのコードなどのコードで問題ではないようですnullポインタ... kdialogに同じ問題が存在する場合を除きます。 – MountainX

答えて

0

Ouh、間違いはばかなものでした。私のコードではKDEではなく(私たちはいつも "これは私のせいでできない"と思う傾向があります...)、それはsuの特権とは関係がありませんでした。私が疑っていたように、それはポインタと関連していました。私はちょうどnullポインタの関数、正確にsetChecked()QAbstractdButtonインスタンスの関数を使用しようとしていた。はい、まったく - .- ...プログラムは正しくコンパイルされましたが、実行すると論理的にSegmentation faultが得られました。

sudoerror /var/tmp/kdecache is owned by uid 1000 instead of uid 0でプログラムを実行すると、興味深い問題が発生しました。私はsudoでプログラムを実行すると、現在私はコンソール上で同じエラーが発生しますが、その後にプログラムが正常に実行されます。

2

これは答えではありませんが、自分のコードに問題がないことを証明しながら問題を再現する簡単な方法かもしれません。 (あなたの質問のタイトルは、「エラー:」/ var/tmp/kdecache-your_user "はuid 0の代わりにuid 1000が所有しています")。

私はあなたがkdialog Ubuntuのkdebase-binパッケージ)を使って、このエラーを複製します。私はそうすることができます。私は解決策を見つけることを望んでいます(あなたの質問にどうやって来たのか)。

ステップ:

kdialog --error "blah blah blah."

  • 期待される結果:

    1. はapt-getののkdebase-binの
    2. ターミナルでまだ
    3. 、入力をインストールし、端末

    4. sudoを開きます通常のユーザーとしてこのkdialogを実行中にエラーは発生しません。それが私の実際の結果です。

    5. にsudo -s(パスワードを入力)
    6. 繰り返し上記のコマンド:

      kdialog --error "blah blah blah."

    7. 期待される結果 - それはエラーなしで動作するはずです。しかし、あなたが見ているのはあなたの質問と同じエラーです。ここで

    私の実際の結果は以下のとおりです。

    $ kdialog --error "blah blah blah" 
    $ sudo -s 
    root> kdialog --error "blah blah blah" 
    Error: "/var/tmp/kdecache-computeruser" is owned by uid 1000 instead of uid 0. 
    

    あなたもこのようないくつかのより多くのエラーが表示されることがあります。上記のような様々なkdialogテストでこれらを得ました。

    Error: "/var/tmp/kdecache-your_user" is owned by uid 1000 instead of uid 0. 
    Error: "/tmp/kde-your_user" is owned by uid 1000 instead of uid 0. 
    Error: "/tmp/ksocket-your_user" is owned by uid 1000 instead of uid 0. 
    kdeinit4: Shutting down running client. 
    Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString) 
    Error: "/tmp/ksocket-your_user" is owned by uid 1000 instead of uid 0. 
    Error: "/tmp/kde-your_user" is owned by uid 1000 instead of uid 0. 
    QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. 
    QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. 
    Error: "/var/tmp/kdecache-your_user" is owned by uid 1000 instead of uid 0. 
    kbuildsycoca4 running... 
    Error: "/var/tmp/kdecache-your_user" is owned by uid 1000 instead of uid 0. 
    Error: "/var/tmp/kdecache-your_user" is owned by uid 1000 instead of uid 0. 
    QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. 
    QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. 
    Error: "/var/tmp/kdecache-your_user" is owned by uid 1000 instead of uid 0. 
    Home directory /home/your_user not ours. 
    
  • +0

    Ouh!あなたは完全に正しい!私はあなたが投稿したことをやりました。あなたが公開した結果を得ました.2番目のコードのような多くのエラーがあります。なぜこれが起こるかについてのあなたの理論は何ですか?現在進行中のQtプログラムで同じバグがありますか? – AxeEffect

    関連する問題