Cygwin ölümcül hata remap yapamıyor .. Bu ne anlama geliyor?


30

pythonCygwin'de çalışırken şu hatayı alıyorum:

    0 [main] python 6140 C:\cygwin\bin\python.exe: *** fatal error - unable to remap \\?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0x2B0000 != 0x360000
Stack trace:
Frame     Function  Args
00288E68  6102749B  (00288E68, 00000000, 00000000, 00000000)
00289158  6102749B  (61177B80, 00008000, 00000000, 61179977)
0028A188  61004AFB  (611A136C, 6124112C, 002B0000, 00360000)
End of stack trace
    0 [main] python 9048 fork: child 6140 - died waiting for dll loading, errno 11
abort: Resource temporarily unavailable

Bu ne anlama geliyor ve düzeltmek için ne yapmalıyım?

Yanıtlar:


40

Sorunu çözmek için rebaseallkomutu rebasepaketten çalıştırmanız gerekir .

  1. rebaseCygwin setup.exeyardımcı programını kullanarak paketi kurun
  2. Çalışan her şeyi kapatın. cygwin1.dll
  3. Bir Cygwin kabuğu açın
  4. Tip rebaseallisteminde

Yeniden düzenleme genellikle dinamik olarak yüklenen kitaplıkları değiştiren yüklü paketler yüklendiğinde gerekir. rebaseallBir Cygwin kurulumunda paketleri kurduktan veya yükselttikten sonra ortaya çıkmakta olan hatayı beklemek yerine , her zaman çalışan kötü bir alışkanlık olduğunu kabul ediyorum .

Neden bu hatayı aldığınıza ve yeniden doğmanın sorunu nasıl çözdüğüne gelince, bu yazının söylediği:

Geriye sahipsin. Forking, yer değiştirmeyi bozmaz. Yer değiştirme çatalları kırıyor. cygwin1.dll, Win32'deki çatal semantiklerini uygulamak için çok özel bir bellek düzenine sahip olmalı. Bu bellek düzeni bozulursa çatal kırılır. Taşınma cygwin1.dll gerekli bellek düzenini bozar. 'rebaseall', bildiği tüm Cygwin DLL'lerini çarpışmaları önleyen bir düzende bulmak için elinden gelenin en iyisini yapar. Bu, gerekli bellek düzenini korur, böylece çatal işini yapabilir.


1
bunu deniyordum ve işe yaramadı ... o da pencereleri yeniden başlatana kadar (bir rebaseall ve peflagsall'dan sonra)
Jon Erickson

Ian C: Sen benim kahramanımsın!
Stefan Rusek

Ayrıca, rebaseall Windows 7'de Yönetici haklarına ihtiyaç duyuyor gibi görünüyor.
xtofl

Baz adresini ayırmak, bazı durumlarda, burada önerildiği şekilde yardımcı olabilir: cygwin.com/ml/cygwin/2011-04/msg00306.html
lapo

2
Bunu normal Cygwin Terminali üzerinden değil kül veya çizgi şeklinde yapmanız gerekir. Başlat -> Çalıştır ile başlat, cygwin \ usr \ bin \ ash içinde. Kül çalıştığında, / usr / bin / rebaseall yazın ve enter tuşuna basın.
Maciej Swic,

10

Bu, virüs tarayıcısı gibi bir 3. parti programın ya da Vista'da tanıtılan DLL adres tesadüfi özelliğinin, işleminizi başarıyla yapılamayacak şekilde engellediği anlamına gelir.

Yardımcı rebaseallprogram, sorunlardan kaçınılması için DLL'leri sabitlemek için kullanılabilir. Varsayılan olarak yüklenir. Daha fazla ayrıntı için rebaseall --helpnasıl kullanılacağına ve /usr/share/doc/Cygwin/rebase-3.0.1.READMEdetaylarına bakınız. Eğer yardımı olmazsa, peflagsalldenemeye değer başka biri.


teşekkürler =) her iki cevap da bana yardımcı oldu ... ama yalnızca birini kabul edebilirim = \
Jon Erickson

5

"Numpy" yi derledikten sonra da aynı problemi yaşadım. Etkilenen Die dll mtrand.dll oldu. Basit

$ /bin/rebaseall

işe yaramadı.

Neyin yardımı vardı: Etkilenen dll (bu durumda time.dll) acutal "rebased" olup olmadığını inceleyin:

$ /bin/rebaseall -v

Etkilenmeyen dll dosyasının tam yolunu içeren bir liste oluşturmazsanız. Örneğin:

$ find /lib -name 'time.dll' > /tmp/mydll.txt

Dosya ayrıca, her satıra bir tane olmak üzere daha fazla sayfa içerebilir. Sonra ara

$ /bin/rebaseall -v -T /tmp/mydll.txt

yukarıda açıklandığı gibi, başka hiçbir cygwin ürünü çalışmıyor. Time.dll şimdi yeniden rebased (ek olarak "normal" rebaseall).

(Garip: nt, windows2000, xp ile cygwin'i kullandıktan 10 yıl sonra, sadece bir kere "yeniden yapmak" zorunda kaldım.


2

Sorunun cevabı var.

Kaynak: https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)


Üst ile Aynı Adrese Eşleştirilemiyor

fatal error – unable to remap \?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0×360000 != 0×3E0000

Bu da node.js ile ilgili bir sorun değildir. Base → rebase'i temel olarak setup.exe kullanarak kurun, ardından tüm Cygwin örneklerini kapatın. Kısa çizgi veya kül (Cygwin kurulumunda bin dizininde bulunan) başlatın ve çalıştırın:

$ /bin/rebaseall -v

Hata olmadan bitmesi gerekir. Bunun yerine yukarıdaki gibi bir hata ile sonuçlanır:

rebaseall:'/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp' is not writable

Bir Cygwin kabuğu açın ve çalıştırın:

$ chmod 777 ~/AppData/Local/Temp

Kabuk pencerenizi kapatın ve yukarıdaki adımları tekrarlayın. İşiniz bittiğinde, bilgisayarınızı yeniden başlatın. Rebaseall kullanmadan önce tüm açık Cygwin mermilerini kapatmayı unutmayın.


Bağlantının başarısız olması durumunda bilgileri gelecekteki kullanıcılar için bağlantıdan kopyalamak iyi bir uygulamadır.
paradd0x
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.