proses tidak jelas melarikan diri

116

Terkadang saya melihat suatu distnotedproses yang tiba-tiba berputar dan mengunyah CPU 100% (pada satu inti) dan satu ton memori, sering di lingkungan sekitar 1,5G atau lebih. Ini terjadi beberapa kali sehari, mulai sekitar sebulan yang lalu.

Baris perintah adalah /usr/sbin/distnoted agent, dan itu dimulai oleh launchd, tidak ada yang banyak membantu. Biasanya berjalan di suatu tempat antara 4 jam dan 24 jam sebelum berputar dan mematok CPU.

Pencarian web mengatakan distnotedmengelola pengiriman pemberitahuan, dan banyak orang lain melaporkan masalah yang sama dengannya, tetapi saya belum menemukan perbaikan. Beberapa orang menemukan bahwa menutup aplikasi pelakunya (mis. Skype) menghentikannya, tetapi saya belum menemukan pelakunya di komputer saya. Saya biasanya hanya menjalankan beberapa aplikasi: Emacs (24.2 dari Homebrew), Firefox, Adium, dan Dash.

Saya menggunakan Mavericks pada akhir 2012 13 "Retina MBP. Terima kasih sebelumnya!

Memperbarui:

Saya telah mengaktifkan distnotedlog sistem dengan menyentuh /var/log/do_dnserver_log, tetapi tidak banyak membantu. Saya melihat garis-garis seperti ini (uid 501 adalah saya, 89 saya belum menemukan):

distnoted[80011]: # distnote server agent  absolute time: 48754.144787848   civil time: Wed Nov 20 10:52:03 2013   pid: 80011 uid: 501  root: no
distnoted[20]: # distnote server daemon  absolute time: 2.808112262   civil time: Tue Nov 19 09:52:24 2013   pid: 20 uid: 0  root: yes
distnoted[444]: # distnote server agent  absolute time: 16.656997509   civil time: Tue Nov 19 09:52:38 2013   pid: 444 uid: 501  root: no
distnoted[1271]: # distnote server agent  absolute time: 52.518265717   civil time: Tue Nov 19 09:53:14 2013   pid: 1271 uid: 89  root: no
distnoted[689]: Interruption - exiting now.

Saya juga menjalankan sudo dtruss -p PIDproses spun-up distnoted, dan memunculkan baris seperti ini:

kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
...
ryan
sumber
Hanya memancing di sini, tetapi dengan perubahan apa saja Anda semua menjalankan fluks ? Bagi saya, mereka tampaknya terkait. Jika saya keluar dari fluks ketika emacs mengamuk, emacs akan crash atau kembali normal. Saya tidak yakin apakah ini kebetulan (hanya terjadi dua kali), tetapi jika semua orang menjalankannya, mungkin ada sesuatu untuk itu.
Saya tidak menjalankan fluks, tapi mungkin yang lain.
ryan
aquaemacs menyebabkan proses ini terbalik pada saya.
maraton
Saya memiliki masalah yang sangat mirip (mungkin masalah yang sama) dan masalah saya hilang dengan pembaruan OS 10.9.4.
Chris Quenelle
Melihat ini hari ini. Pelakunya adalah aplikasi Google Drive OS X (10.9) (1.17.7290.4094). Pertama kali saya melihat ini.
jordanpg

Jawaban:

24

Ringkasan dari OP : Ini adalah alat yang hebat untuk debugging. Ini awalnya menunjuk saya ke Spotlight mengindeks ulang sistem file, tapi saya mempersempit hal-hal yang diizinkan untuk diindeks, dan saya masih melihat masalah. Saya akhirnya membuat tugas cron untuk membunuh distnoted secara teratur. Lihat jawaban lebih jauh ke bawah.


Anda dapat men-debug yang membingungkan dengan membuat file /var/log/do_dnserver_log ini menyebabkan CFNotificationCenterserver ( distnoted) mencatat informasi tentang semua pemberitahuan ke log sistem.

Saya akan mulai dari sana, reboot dan lihat log sistem ketika CPU meningkat. Ini harus keluar dari pelakunya dengan mudah.

Info lebih lanjut tentang CFNotificationCenterdebugging dapat ditemukan di dokumen Pengembang resmi di sini: Catatan Teknis TN2124> CFNotificationCenter

Temikus
sumber
Terima kasih! panggilan yang bagus, sekarang saya sudah melakukan itu. Saya tidak melihat ada entri yang tidak jelas di /var/log/system.logdalamnya, tetapi juga belum diputar sejak saya memulai logging. semoga saja.
ryan
saya melihat garis log yang tidak jelas sekarang, tetapi mereka tidak terlalu berguna. mendesah. contoh:Nov 23 07:56:15 hell.local distnoted[2644]: # distnote server agent absolute time: 77.445654904 civil time: Sat Nov 23 07:56:15 2013 pid: 2644 uid: 89 root: no
ryan
Cobalah untuk melampirkan skrip DTrace ke proses itu dan lihat apa yang sebenarnya dilakukannya, mulailah dengan sudo dtruss -p PIDdan lihat apa syscalls yang coba dilakukan oleh proses itu dan jika ada yang gagal (statusnya bukan 0).
Temikus
Juga, apa itu UID 89 pada sistem Anda? Apakah UID dalam notifikasi berubah? Apakah pid 2644 sesuai dengan distnoted atau proses lain?
Temikus
terima kasih atas ide-idenya! Saya kenal strace, tetapi saya tidak tahu dtruss. Saya pasti akan mencobanya lain kali. pids hanyalah proses terpisah yang berhubungan, dan satu-satunya uids adalah saya dan _appserveradm, pengguna sistem bawaan saya tidak tahu banyak tentang.
ryan
33

Saya sudah melihat ini juga. Emacs 24.3.1, Mavericks 10.9.

Saya telah menemukan bahwa proses yang tidak jelas menjadi tenang dalam beberapa detik setelah saya keluar dari Emacs.

Saya telah mengajukan bug Emacs di sini: http://permalink.gmane.org/gmane.emacs.bugs/80836

Don Tillman
sumber
2
Juga terlihat dengan Emacs v23.4.1.
WilliamKF
1
Sama disini. Tidak pernah membayangkan itu disebabkan oleh Emacs! Terima kasih
Lionel Henry
1
Bagi saya, saya mengalami masalah yang sebaliknya - Emacs mulai menggunakan semua CPU, dan membunuh pengguna saya yang tidak jelas membersihkan masalah untuk sementara waktu. Dalam kasus ini, melihat proses Emacs saya melihat banyak utas - yang bukan berasal Emacs - semuanya menunggu di com.apple.root.default-prioritas-antrian / mutasi (jalankan lldb, "proses attach --pid <pid> ", lalu" utas backtrace all "untuk melihat semuanya)
jrg
dan ini adalah bacaan yang menarik tentang apa sebenarnya semua utas itu: newosxbook.com/articles/GCD.html (pembunuhan saya yang keliru mungkin merupakan 'bulu ajaib', dan bukan hal yang mengembalikannya menjadi normal)
jrg
Juga terlihat dengan Emacs v24.5 pada OS X 10.11.3
Michael
23

Saya tahu saya terlambat ke pesta, tetapi ini adalah kebocoran memori khusus untuk emacs Kakao di Mavericks yang diperbaiki di bagasi. Untuk saat ini ada tambalan yang dapat Anda gunakan untuk membangun emacs 24.3 hanya dengan perbaikannya.

https://gist.github.com/anonymous/8553178


pengguna68323
sumber
1
Saya memperbarui ke build malam dari Emacs untuk Mac OS X (pada bulan Maret) dan masih memiliki masalah. Tampaknya terjadi jika saya membuat sesi interaktif untuk R atau Clojure (bahasa pemrograman). Proses distnoted perlahan akan naik ke GB RAM dan akan membebaskannya segera setelah saya keluar dari Emacs.
mattrepl
Masalah yang sama yang disebutkan @mattrepl.
Amelio Vazquez-Reina
1
Homebrew tampaknya telah mengintegrasikan tambalan ini. Jadi brew reinstall emacs --cocoa --with-gnutlsdapat memperbaiki masalah juga. Itu juga seharusnya diperbaiki di 24,4 tapi itu belum mencapai yang stabil.
mblakele
Baru saja mengalami masalah ini dengan Emacs 24.5 (perbaikan seharusnya di 24.4) .. dalam kasus saya, Emacs sedang menunjukkan bola yang berputar dan tidak masuk akal mengambil hampir 400% CPU (per top) dan membunuh -9 emacs tidak bekerja, tetapi setelah membunuh -HUP emacs yang tidak dikenal merespons pembunuhan itu.
Michael
17

Saya mengalami masalah yang sama dengan distnotedEl Capitan untuk beberapa waktu. Solusi saya tidak sekeras membunuhnya secara teratur, tetapi saya memeriksa kehabisan kontrol (penggunaan CPU tinggi), dan kemudian membunuhnya. Saya menggunakan skrip ini:

#!/bin/sh
#
# check for runaway distnoted, kill if necessary
#
PATH=/bin:/usr/bin
export PATH

ps -reo '%cpu,uid,pid,command' | 
    awk -v UID=$UID '
    /distnoted agent$/ && $1 > 100.0 && $2 == UID { 
        system("kill -9 " $3) 
    }
    '

Script dijalankan dari cron setiap menit dengan baris ini di crontab:

*   *  *   *  *   sh "$HOME/bin/checkdistnoted"

Dalam praktiknya, skrip membunuh distnotedsekali atau dua kali sehari, dan biasanya ini terjadi setelah backupddimulai.

Bagi mereka yang tidak nyaman menggunakan shell OS X (command line), skrip berikut akan menginstal checkdistnotedskrip dan entri crontab:

#!/bin/sh
#
# install $HOME/bin/checkdistnoted
# setup crontab to run every minute
# 
# MWR Apr 2016
#

INSTALLCMD=bin/checkdistnoted
cd "$HOME"
[ ! -d bin ] && mkdir bin
[ -f $INSTALLCMD ] || {
    cat > $INSTALLCMD <<-"!!"
    #!/bin/sh
    #
    # check for runaway distnoted, kill if necessary
    #

    PATH=/bin:/usr/bin
    export PATH

    ps -reo '%cpu,uid,pid,command' | 
        awk -v UID=$UID '
        /distnoted agent$/ && $1 >= 100.0 && $2 == UID { 
            # kill distnoted agent with >= 100% CPU and owned by me
            system("kill -9 " $3) 
        }
        '
!!
    chmod +x $INSTALLCMD 
    echo installed $INSTALLCMD
}

INSTALLCRON="# check for runaway distnoted every minute:
* * * * * sh \"\$HOME/$INSTALLCMD\""
crontab -l | grep -q '$HOME'/$INSTALLCMD || {
    crontab -l > mycron
    echo "$INSTALLCRON" >> mycron
    crontab mycron
    rm mycron
    echo updated crontab
}

Anda harus menyimpan yang di atas seperti install_checkdistnoted.shpada desktop Anda, kemudian jalankan Applications/Utilities/Terminaldan ketik:

cd Desktop
sh install_checkdistnoted.sh 

Jika berfungsi sepenuhnya akan mencetak konfirmasi dari masing-masing langkah. Skrip tidak akan menimpa checkdistnotedentri skrip atau crontab yang ada.

Michael Rourke
sumber
2
TERIMA KASIH! Solusi hebat yang memungkinkan saya untuk tetap tidak dikenal, tetapi mematikannya saat lepas kendali. Untuk orang lain seperti saya yang mungkin tidak terbiasa dengan cara Unixy dalam melakukan sesuatu: 1). folder rumah Anda tidak akan memiliki direktori bin, membuat folder bin di bawah nama pengguna Anda, dan meletakkan skrip di sana sebagai file teks bernama "checkdisnoted". 2). Untuk membuat entri cron, jalankan "crontab -e" di terminal, tekan tombol "i" untuk masuk ke mode insert, dan rekatkan seluruh baris dengan tanda bintang, lalu tekan "esc" untuk kembali dalam mode perintah, dan masukkan ": wq" untuk menyimpan file dan keluar dari editor.
mike
@Michael Rourke: Ini adalah solusi hebat. Namun, skrip instalasi berisi kesalahan sintaksis di bawah bash bawaan Mac "GNU bash, versi 3.2.57 (1) -release (x86_64-apple-darwin15)". "||" pintas logika dan "<< -" sepertinya tidak berfungsi di sini.
kakyo
@kakyo - maaf, skrip gagal karena tab menjadi spasi - diperbaiki sekarang.
Michael Rourke
8

Saya menyerah dan mengambil pendekatan palu godam: bunuh secara otomatis, setiap menit. mendesah.

saya taruh ini di ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist:

<plist version="1.0">
<dict>
  <key>Label</key>
  <string>org.snarfed.pkill_distnoted</string>
  <key>ProgramArguments</key>
  <array>
    <string>pkill</string>
    <string>-KILL</string>
    <string>-f</string>
    <string>distnoted</string>
  </array>
  <key>StartInterval</key>
  <integer>60</integer>  <!-- every minute -->
</dict>
</plist>

dan kemudian menginstalnya dengan launchctl load ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist.

ryan
sumber
1
Pendekatan Michael Rourke di bawah ini adalah pembersih sentuhan, karena hanya membunuh tanpa nama ketika mulai memakan cpu.
mikrofon
@ Mike tapi pendekatan Michael Rourke tidak berurusan dengan kasus di mana disnotedmakan RAM.
Cœur
@ Cœur - Ya. Saya belum mengalami masalah dengan memakan RAM yang tidak digunakan. Apakah itu masalah yang Anda lihat?
Mike
1
@ Mike ya, disnotedmakan 63 GB RAM di High Sierra saya kemarin. Bahkan ryan, dalam pertanyaannya, menyatakan bahwa proses itu mengunyah banyak memori .
Cœur
@ Cœur - poin bagus! Saya membatalkannya.
Mike
4

Saya telah melakukan berbagai kombinasi pengupasan kustomisasi untuk mempersempit perilaku ini; Saya pikir ini mode comint. Pada 10.9 dengan emacs 24.3.1 dari homebrew (atau dari emacsforosx) kebocoran + emacs yang tidak jelas (keduanya secara perlahan meningkatkan konsumsi memori) akan terjadi dengan satu buffer mode shell terbuka. Tidak akan terjadi jika Anda hanya mengunjungi file.

Hanya ingin mencatatnya di sini, gmane tampaknya turun dan saya terus menemukan diskusi ini pada pencarian dua kali seminggu saya untuk tindak lanjut masalah ini.

Lang Martin
sumber
Terima kasih! Saya mungkin benar-benar melihat hal yang sama. Saya pikir sorotan netralisasi (jawaban yang diterima) telah bekerja untuk saya, tetapi saya masih melihat pelarian kabur setelah semua. terima kasih lagi atas petunjuknya, saya dapat mengikuti ini dan men-debug lebih banyak juga.
ryan
Saya percaya itu adalah sesuatu untuk berurusan dengan proses Emacs saya juga. tidak tenang menjadi tenang setelah aku membunuh Emacs. Saya memiliki server.el, edit-server.el dan shell python berjalan setiap saat untuk catatan.
Lester Cheung
Melihat hal yang sama! Emacs yang harus disalahkan!
justingordon
Saya bahkan tidak tahu apa itu mode comint dan saya sering mengalami masalah dari emacs. Jadi mungkin tidak ada paket khusus yang bisa disalahkan.
huyz
2

Saya pikir saya hanya dapat mengingat 2 kesempatan ketika distnoted telah rusak. Pada kesempatan ini ada 2 dari mereka yang duduk di puncak daftar cpu dan satu lebih dari 400%. Itu terjadi tak lama setelah kembali ke kantor dan mencolokkan beberapa display eksternal - salah satunya adalah usb powered - saya menduga bahwa itu mungkin terkait. Saya tidak melakukan apa pun untuk mencoba dan memperbaiki masalah sebelum mengeluarkan tampilan USB yang mengembalikan kewarasan secara instan. Dan kemudian memasangnya kembali menghasilkan tidak ada masalah berulang.

Yang membuktikan apa? Tidak ada ide!

Saya pasang mereka ratusan kali dan ini adalah pertama kalinya saya menyadari bahwa itu mungkin terkait. Dan karena itu tidak terjadi setiap kali saya pasang mereka, maka mungkin ada hubungannya dengan memasukkan keduanya terlalu cepat satu sama lain, atau sesuatu yang acak seperti itu. Bagaimanapun pikir saya akan berbagi kalau-kalau orang lain menemukan itu ada hubungannya dengan mencolokkan periferal (jika itu adalah layar eksternal)

petednz - fuzion
sumber
Saya memiliki situasi yang serupa. Ketika saya mencabut adaptor layar USB saya tidak lagi berhenti mengkonsumsi CPU yang berlebihan (sesuai "atas"), dan ketika saya memasangnya kembali, masalah tidak segera muncul kembali.
Dalbergia
Ini ternyata menjadi masalah bagi saya juga. Terima kasih!
Eric Simonton
2

Ini tampaknya terjadi ketika suatu aplikasi entah bagaimana membuat kesalahan menggunakan notifikasi API yang disediakan oleh macOS. Dalam kasus saya pelakunya adalah iTerm2. Setelah berhenti, distnotedproses keluar. Penyebab lain yang telah diidentifikasi adalah Emacs dan iTunes.

xApple
sumber
1
iTerm2 menyebabkannya untuk saya juga.
ctc
0

Untuk apa nilainya, saya dapat memperbaiki masalah ini dengan menonaktifkan perangkat lunak anti-virus saya.

David P. Caldwell
sumber
0

Ini terjadi pada saya juga, bingung itu menjadi gila. Setelah menutup banyak aplikasi, tidak ada yang membantu.

Lalu saya perhatikan salah satu dialog 'Laporkan ke Apple' dari proses Python yang macet dibiarkan terbuka sepanjang malam.

Meskipun itu bisa saja kebetulan, setelah menutup dialog, proses yang membingungkan itu menjadi tenang.

Chris
sumber
0

Saya mengalami masalah yang sama dengan distnoted beberapa bulan yang lalu dan tidak dapat melacak mengapa penggunaan CPU melonjak di atas 100%. Akhirnya, saya menambahkan entri ke crontab saya killall distnotedsetiap 2 menit yang menyelesaikan masalah saya.

Baru-baru ini, saya mengalami masalah dengan Teks Sublime di mana pengetikan subl path/to/filegagal membuka file dengan benar di Sublime Editor. Restart aplikasi memperbaiki masalah, tetapi dengan cepat mulai terjadi lagi.

Setelah memeras otak saya tanpa akhir, saya mengidentifikasi fakta bahwa saya membunuh proses yang membingungkan setiap 2 menit mengapa perintah subl secara misterius berhenti bekerja.

Kesimpulannya: penggunaan CPU super tinggi mungkin terkait dengan luhur. Sekarang sublim telah diperbarui, semoga kesimpulan saya benar, penggunaan CPU tetap rendah, dan perintah subl saya kembali berfungsi seperti yang diharapkan sekarang bahwa distnoted berjalan lagi tanpa crontab saya membunuh proses setiap 2 menit.

finiteloop
sumber
0

Saya juga pernah mengalami masalah ini, untuk beberapa waktu sekarang, tetapi sebentar-sebentar. Rupanya distnoted adalah bagian dari iTunes dan telah menyebabkan masalah pada Windows juga . Ketika saya membunuh iTunes (yang sedang memainkan lagu), distontedproses yang menggunakan 400% dari CPU saya (saya memiliki 4 core) berhenti menjadi masalah.

Jadi jawaban saya, sampai saya tahu lebih baik, adalah merekomendasikan Anda untuk membunuh iTunes, bukan distnoted, dan beri tahu kami apa yang terjadi.

ay32
sumber
-1

Saya juga melihat pergi berantakan, dalam kasus saya sepertinya terkait dengan fontd. Saya memiliki tiga distnoted running, satu untuk _spotlight, satu untuk _distnote dan satu untuk pengguna saya.

distnoted   0,0 6:39,85 2   0   101 _distnote   0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit
distnoted   0,0 0,05    2   0   642 _spotlight  0 bytes 0 bytes     Yes     -   No  No  No  0 bytes 0 bytes 64 bit
distnoted   82,1    1:19:38,30  49  1   353 nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit

Setiap kali makan cpu (30-90%), fontworker dan fontd masing-masing memakan 30-60% cpu. Segera setelah saya mematikan fontd, distnoted, dan fontworker agar pengguna saya tenang. Membunuh fontworker tidak melakukan apa-apa. Setelah beberapa menit ketika fontd telah dimulai kembali dan telah berjalan beberapa saat semuanya dimulai lagi.

fontworker  27,2    52,81   4   1   1073    nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit
fontd   32,6    1:07,41 6   0   1072    nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit

Saya tidak tahu mengapa ini terjadi ...

Nils
sumber
-2

Peter Buckley benar, saya salah. Aku benci kalau itu terjadi.

Jangan hapus distnoted, boot berikutnya tidak akan menyenangkan sama sekali.

salah> Saya mengambil pendekatan godam
salah> 
salah> sudo mv / usr / sbin / distnoted /usr/bin/distnoted.unwanted
salah>
salah> Ini adalah mesin kerja dan saya tidak tertarik untuk menyelaraskan dengan iTunes.

ConorR
sumber
Itu gila. Seperti dicatat di halaman Apple tentang distnoted , distnoted adalah bagian dari OS X, berurusan dengan notifikasi yang didistribusikan, dan telah ada sejak setidaknya tahun 2005.
jfmercer
Apa pun yang Anda lakukan, JANGAN bergerak distnotedseperti yang disebutkan ConorR (dan kemudian diperbaiki, terima kasih!), Diperlukan untuk mem-boot OSX (10.9.5 dalam kasus saya).
Peter Buckley
Sebanyak ini bukan jawaban, saya pikir ini penting bahwa ini tetap dicatat di suatu tempat di halaman. Saya hampir dianggap mencoba untuk pindah ke tempat lain.
Zenexer