প্রযুক্তিগত বিবরণ
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68570000, RegionSize 0x2A0000, State 0x10000
PortableGit\bin\bash.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
এই লক্ষণটির নিজেই এক্সিকিউটেবলের ইমেজ বেসগুলি, সাইগউইনের ভাগ করা মেমরি বিভাগগুলি, ডিএলএলগুলির বিবাদী সংস্করণ ইত্যাদির সাথে কোনও সম্পর্ক নেই has
সাইগউইন কোডটি এই স্থির ঠিকানায় 0x68570000 এ তার স্তূপের জন্য 5 এমবি মেমরির একটি বড় অংশ বরাদ্দ করতে ব্যর্থ হয়েছে, যখন কেবল একটি গর্ত ~ 2.5 এমবি বড় সেখানে উপস্থিত ছিল ly প্রাসঙ্গিক কোডটি MSysgit উত্সে দেখা যায় ।
ঠিকানার জায়গার অংশটি কেন মুক্ত নয়?
এর অনেক কারণ থাকতে পারে। আমার ক্ষেত্রে এটি বিরোধী ঠিকানায় লোড হওয়া আরও কিছু মডিউল ছিল:
শেষ ঠিকানাটি 0x68570000 + 5 এমবি = 0x68C50000 এর কাছাকাছি হবে, তবে 0W68810000 থেকে উপরের দিকে লোড করা এই WW64- সম্পর্কিত ডিএলএল রয়েছে, যা বরাদ্দকে অবরুদ্ধ করে।
যখনই কিছু ভাগ করে নেওয়া ডিএলএল থাকে, উইন্ডোজ সাধারণভাবে কিছু স্থানান্তর প্রক্রিয়াজাতকরণ সংরক্ষণ করতে সমস্ত প্রক্রিয়াতে একই ভার্চুয়াল ঠিকানায় এটিকে লোড করার চেষ্টা করে। এটা তোলে দুর্ভাগ্য ব্যাপার যে, এই সিস্টেম উপাদান একরকম একটি পরস্পরবিরোধী ঠিকানায় লোড পেয়েছি এই সময় ।
কেন আপনার গিটে সাইগউইন আছে?
কারণ গিট একটি সমৃদ্ধ স্যুট যা কিছু নিম্ন স্তরের কমান্ড এবং প্রচুর সহায়ক ইউটিলিটি সমন্বিত থাকে এবং বেশিরভাগ ইউনিক্সের মতো সিস্টেমে বিকাশিত হয়। এটিকে তৈরি করতে এবং বিশাল পুনর্লিখন ছাড়াই এটি চালাতে সক্ষম হওয়ার জন্য, এটির জন্য কমপক্ষে আংশিক ইউনিক্সের মতো পরিবেশের প্রয়োজন।
এটি সম্পাদন করার জন্য, লোকেরা মিনজিডাব্লু এবং এমএসওয়াইএস আবিষ্কার করেছে - উইন্ডোজে ইউনিক্সের মতো ফ্যাশনে প্রোগ্রামগুলি বিকাশের জন্য ন্যূনতম বিল্ড সরঞ্জামগুলির সেট tools এমএসওয়াইএসে একটি ভাগ করা লাইব্রেরিও রয়েছে, এটি msys-1.0.dll
রানটাইম চলাকালীন দুটি প্ল্যাটফর্মের মধ্যে কিছু সামঞ্জস্যতার সমস্যার সাথে সহায়তা করে। এবং এর অনেকগুলি অংশ সাইগউইনের কাছ থেকে নেওয়া হয়েছে, কারণ ইতিমধ্যে সেখানে কাউকে একই সমস্যা সমাধান করতে হয়েছিল।
সুতরাং এটি সাইগউইন নয়, এটি মিনজাব্লোর রানটাইম ডিএলএল যা এখানে অদ্ভুত আচরণ করছে।
সাইগউইনে, এই কোডটি এমএসওয়াইএস ১.০-তে আসলেই অনেক কিছু বদলেছে - এই ফাইলটির জন্য শেষ প্রতিশ্রুতি বার্তাটি "ইম্পোর্ট সাইগউইন ১.৩.৪" বলছে, যা ২০০১ সালের!
উভয় বর্তমান Cygwin এবং MSYS নতুন সংস্করণ - MSYS2 - ইতিমধ্যে জায়গাতেই বিভিন্ন যুক্তি, যা আশা আরো জোরালো আছে। উইন্ডোজের গিটের এটি কেবল পুরানো সংস্করণ যা এখনও পুরানো ভাঙা এমএসওয়াইএস সিস্টেম ব্যবহার করে নির্মিত হয়েছে।
পরিষ্কার সমাধান:
- উইন্ডোজ 2 এর জন্য গিট ইনস্টল করুন - এটি নতুন, সঠিকভাবে বজায় রাখা এমএসওয়াইএস 2 দিয়ে নির্মিত এবং এতে আরও অনেকগুলি নতুন বৈশিষ্ট্য রয়েছে, প্রচুর পরিমাণে বাগ ফিক্স, সুরক্ষা উন্নতি এবং অন্যান্য। যদি সম্ভব হয় তবে 64৪-বিট সংস্করণ ব্যবহার করারও পরামর্শ দেওয়া হচ্ছে । তবে রিবেস ওয়ার্কআরাউন্ডটি 32-বিট সিস্টেমগুলির জন্য পর্দার আড়ালে স্বয়ংক্রিয়ভাবে সঞ্চালিত হয়, সুতরাং সেখানে সমস্যা হওয়ার সম্ভাবনাও কম হওয়া উচিত।
- ঠিকানার জায়গাগুলি পরিষ্কার করার জন্য কম্পিউটারটিকে পুনরায় চালু করা (এই মডিউলগুলি অন্য কোনও এলোমেলো ঠিকানায় লোড করা) কাজ করতে পারে তবে সত্যিকার অর্থে, উইন্ডোজ 2 এর জন্য গিটে আপগ্রেড করুন অন্য কিছু না থাকলে সুরক্ষা ফিক্সগুলি পেতে।
হকি সমাধান:
- পরিবর্তন
PATH
কখনও কখনও কাজ করতে পারে কারণ msys-1.0.dll
গিট বা অন্যান্য এমএসওয়াইএস-ভিত্তিক অ্যাপ্লিকেশনগুলির বিভিন্ন সংস্করণে বিভিন্ন সংস্করণ থাকতে পারে যা সম্ভবত বিভিন্ন ঠিকানা, এই স্তূপের বিভিন্ন আকার ব্যবহার করে use
- রিবেসিং
msys-1.0.dll
সময় নষ্ট হতে পারে, কারণ 1) একটি ডিএলএল হওয়ায় এটি স্থানান্তরিত তথ্য ইতিমধ্যে এবং 2) "উইন্ডোজ ওএসের যে কোনও সংস্করণে কোনও (...) ডিএলএল সর্বদা একই ঠিকানার জায়গায় লোড হওয়ার কোনও গ্যারান্টি নেই" যাইহোক ( উত্স )। msys-1.0.dll
এটির সাহায্যের একমাত্র উপায় হ'ল যদি নিজেই এটির বিরোধী ঠিকানায় এটি লোড করার পরে এটি ব্যবহারের চেষ্টা করা হয়। দৃশ্যত এটি কখনও কখনও কেস হিসাবে দেখা যায়, উইন্ডোজ ছেলের জন্য গিটটি 32-বিট সিস্টেমে স্বয়ংক্রিয়ভাবে এটি করছে ।
- উপরের অনুসন্ধানগুলি বিবেচনা করে, আমি মূলত বাইনারিটির
msys-1.0.dll
জন্য আলাদা মান ব্যবহার করার জন্য বাইনারি প্যাচ করেছিলাম _cygheap_start
এবং এটি সমস্যার সাথে সাথে সমাধান করে।