ক্র্যাশ (অর্থাত্ দোভাষীকে কাজ বন্ধ করতে বাধ্য করা এবং জোর করে বন্ধ করা) পাইথন [বন্ধ]


16

আমি দেখতে চাই কে পাইথনকে সবচেয়ে সৃজনশীল কোড সহ মারাত্মক ক্র্যাশ করতে পারে। এর অর্থ হ'ল প্রোগ্রামটি চলাকালীন, উইন্ডোজ উদাহরণস্বরূপ, "আইডিএল কাজ করা বন্ধ করে দিয়েছে" এর মতো কিছু নিয়ে যাবে এবং কোনও প্রোগ্রাম ক্র্যাশ হওয়ার পরে লিনাক্স যা করবে তা লিনাক্স করবে।

নিয়মাবলী:

  1. এটি অবশ্যই পাইথন ২.7 বা তার উপরে তৈরি করা উচিত (সুতরাং পুরানো বাগগুলি পাইথনের ভবিষ্যতের সংস্করণগুলিতে স্থির করা হয়নি)।

  2. "ক্র্যাশ" এর সংজ্ঞাটি "আইডিএল বা পাইথনকে অযৌক্তিক উপায়ে প্রস্থান করুন।" এর অর্থ এই নয় যে "আইডিএল বা পাইথন থামান এবং একটি ট্রেসব্যাক দিন"। এর অর্থ হ'ল প্রস্থান, sys.quit, abort ইত্যাদি বৈধ উত্তর নয়। উদাহরণস্বরূপ, এটি গৃহীত হবে না:

    import sys
    try:
         print c # Crashes Here, as c is not defined.
     except NameError, SyntaxError:
         print "Oh No!"
         sys.exit()
    
  3. পাইথনকে সাড়া দেওয়া বন্ধ করে দেওয়া গ্রহণযোগ্য নয়।

  4. কোডটি ক্র্যাশ করতে কী করবে সে সম্পর্কে অবশ্যই তাকে ব্যাখ্যা করতে হবে। বাগ রিপোর্টের একটি লিঙ্ক ঠিক আছে।

10 দিনের জয়ের পরে সর্বাধিক উত্সাহিত উত্তর! শুরু করুন !!

সম্পাদনা: আমি এটিকে পরিষ্কার করে দিতে পারি যে উদ্দেশ্যটি পাইথনকে কেবল একটি ট্রেসব্যাক দিয়ে প্রোগ্রামটি সম্পাদন বন্ধ করে দেওয়া নয় । উদ্দেশ্যটি হল পাইথনকে সম্পূর্ণ ক্রাশ করা বা কাজ বন্ধ করা। এর অর্থ এই যে যদি এই কাজটি সফলভাবে সম্পাদন করা হয় তবে উইন্ডোজ এটি দেবে (আমি এখানে ওয়ার্ড ক্র্যাশ করছি না, এটি একটি ভিন্ন প্রোগ্রামের জন্য কী হওয়া উচিত তার একটি উদাহরণ):

ত্রুটি সংলাপ

অথবা এটা:

ত্রুটি সংলাপ 2


1
ট্যাগ কোড-চ্যালেঞ্জের জন্য একটি উদ্দেশ্যমূলক বিজয়ী মানদণ্ড প্রয়োজন। আমি মনে করি সর্বাধিক সৃজনশীল যথেষ্ট উদ্দেশ্যসম্পন্ন নয় ...
হাওয়ার্ড

ওকে - অসুস্থ, যতটা সম্ভব সংক্ষিপ্ত অন্যান্য অধিকাংশ চ্যালেঞ্জ মত পরিবর্তন এটা .. ক্রিয়েটিভ বেশ দ্ব্যর্থক আসলে ...
জর্জ

@ জর্জিএইচ যদি সৃজনশীল আপনি সন্ধান করেন তবে জনপ্রিয়তা-প্রতিযোগিতা পুরোপুরি কার্যকর হয়। আমি ব্যক্তিগতভাবে অনুভব করি যে এটি জনপ্রিয়তার প্রতিযোগিতা হিসাবে সেরা। ভবিষ্যতে, আপনি আপনার প্রশ্নটি স্যান্ডবক্সের মাধ্যমে চালাতে পারেন যেখানে পোস্ট করার আগে এই কিনকগুলি কাজ করা যায়।
জাস্টিন

2
@ হাই রিপ্রেসযুক্ত লোকেরা, আমার prntপ্রশ্নে ইচ্ছাকৃত।
জর্জ

6
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ এই প্রশ্নটি দূষিত কোডের জন্য বলে।
অ্যাডমবর্কবার্ক

উত্তর:


18

একটি কোড-গল্ফিং প্রতিযোগিতা হওয়া উচিত ছিল;) - আমি অনুমান করি যে সৃজনশীলতা হ'ল কোডটি এই বিবৃতি দেয়: "আমি এখানে জানি কি না ..."

উইন্ডোজ চলমান আইডিএলতে নিম্নলিখিত অক্ষরটি অনুলিপি করুন এবং পেস্ট করুন:

𐒢

উইন্ডোজ দ্বারা ইউটিএফ -16 রূপে এনকোড করা অক্ষর এবং আইডিএল দ্বারা একটি ইউটিএফ -8 অক্ষরে ব্যর্থ রূপান্তর ... এর সাথে ক্র্যাশটির কিছু সম্পর্ক রয়েছে ...

সম্পাদনা করুন: পাইথন বাগ # 13153


আমি নিশ্চিত নই যে এটি সত্যিকারের বৈধ উত্তর কিনা। প্রশ্নটি "যখন প্রোগ্রামটি চালায়" says তবে এখানে প্রোগ্রামটি কখনই চালিত হয় না। আইডিএল ক্রাশ হয় যখন আপনি কেবল 𐒢এটি চালানোর আগেই এটি আটকান ।
সেবাস্তিয়ান নেগ্রাসজাস

হ্যাঁ, আমাকে @ সেবাস্তিয়ানের সাথে একমত হতে হবে। পাইথন প্রোগ্রামে আপনি একটি টেক্সট ফাইল দিয়ে শুরু করেন এবং এতে পাইথন ইন্টারপ্রেটার চালান, তবে আপনি কীভাবে টেক্সট ফাইল তৈরি করবেন তা বিবেচ্য নয়।
ডেভিড জেড


এটি ম্যাকের উপরও কাজ করে!
TheDoctor

19

ctypes অপব্যবহার:

import ctypes;ctypes.string_at(1)

এটি একটি ঠিকানায় 1 কে কাস্ট করে এবং এটিকে অবহেলা করে। যে কোনও বুদ্ধিমান সিস্টেমে (উদাহরণস্বরূপ, যার উপর 0x00000001 কোনও ম্যাপ করা ঠিকানা নয়), এটি তাত্ক্ষণিকভাবে সেগফল্ট হয়ে যাবে।


আমার মেশিনে, এটি দোভাষীকে ক্রাশ করছে বলে মনে হচ্ছে না। একটি উইন্ডোজআরর ত্রুটিযুক্ত একটি ট্রেসব্যাক প্রদর্শিত হবে।
ধারা

@ ধর: আহ, তা হ'ল সিটিপসের কাঠামোগত ব্যতিক্রম হ্যান্ডলার ক্র্যাশটি ধরা পড়ে। আমি নিশ্চিত যে আপনি ctypesউইন্ডোজ দিয়ে পাইথনকে অন্য কোনও উপায়ে ক্রাশ করতে পারেন তবে খুব কম চরিত্রের মধ্যে নাও থাকতে পারেন।
nneonneo

12

60

import sys
sys.setrecursionlimit(1<<30)
f=lambda f:f(f)
f(f)

আমার নিজের ধারণা নয়। পাইথন উইকি থেকে এখানে অনুলিপি করা হয়েছে

এটি অসীম পুনরাবৃত্তি ঘটায় এবং দোভাষী দ্বারা থামানো হয়নি কারণ আমরা পুনরাবৃত্তি সীমাটি পরিবর্তন করেছি।


ধন্যবাদ - এটি একটি দুর্দান্ত উত্তর, তবে ভুল প্রশ্নের জন্য! প্রশ্নে উদ্দেশ্যটি স্পষ্ট করা হয়নি। যদিও আপনার উত্তরের জন্য ধন্যবাদ।
জর্জ

2
@ জর্জে এইচ দুঃখিত, আমি এখন উইন্ডোজ মেশিনটি ব্যবহার করছি না, তবে অজগর দোভাষীকে মূল পর্যাপ্ত ডাম্প করার কারণে সেগমেন্টেশন দোষ নেই? i.imgur.com/5gSGBpr.png
ব্যবহারকারী 12205

10

signal আপত্তিজনক (শুধুমাত্র উইন্ডোজবিহীন):

import os;os.kill(0,4)

বেশিরভাগ সিস্টেমে (যার উপর সিগিল = 4) এটি পাইথনটিকে একটি "অবৈধ নির্দেশনা" ত্রুটির সাথে হত্যা করবে।

অথবা আপনি ঘাতক অ্যালার্ম ঘড়ি ব্যবহার করে প্রোগ্রামটি হত্যা করতে পারেন :

import signal;signal.alarm(1)

এক সেকেন্ড পরে, পাইথন ক্রিপ্টিক বার্তা "অ্যালার্ম ক্লক" দিয়ে মারা যায়।


অন্যান্য একক চরিত্রের সিগন্যাল কোডগুলির মধ্যে 1, 3, 5, 6, 8 এবং 9 অন্তর্ভুক্ত রয়েছে
ব্যবহারকারী 12205

9

পাইথন ৩.৩ এ:

exec(type((lambda:0).__code__)(0,1,0,0,0,b'',(),(),(),'','',1,b''))

পাইথনে ২.7 কোডের বিষয়গুলি কিছুটা পৃথক:

exec type((lambda:0).func_code)(0,1,0,0,'Q',(),(),(),'','',0,'')

হ্যাঁ, আপনি যে কোনও পুরানো আবর্জনা বাইট কোড ইন্টারপ্রেটারকে দিতে পারেন এবং এটি কার্যকর করে ( পাইথন ইস্যু # 17187 )।


সংক্ষিপ্ত (পাইথন ২.x):exec type((lambda:0).func_code)(0,1,0,0,'Q',(),(),(),'','',0,'')
২ne

ধন্যবাদ! এবং পাইথন 3 এ আমরা ব্যবহার করতে পারি .__code__

6

পুনরাবৃত্তির পুনরাবৃত্তিকারীরা পাইথন স্ট্যাক নয়, সি স্ট্যাক ব্যবহার করে ( সমস্যা # 14010) এবং ইস্যু # 14507 ):

i=''
for _ in range(9**6):i=filter(int,i)
del i

এটি আমার ম্যাকটিতে পাইথন ২.7.১১ ক্র্যাশ করে না, তবে এটি পাইথনকে ৩.৫.১ ক্র্যাশ করে।
নিনেনিও

4

দোভাষীকে ক্রাশ করার একটি সহজ উপায় হ'ল এটিকে হ্রাসকারী না করে চালিত করা:

import ctypes, sys
(ctypes.c_char*4).from_address(id(None))[:] = '\0'*4

বোনাস হিসাবে, পাইগন পাইগন 2 সেগফোল্ট করার জন্য একটি চতুর উপায়:

import ctypes, struct, sys
inner = ()
outer = (inner,)
c_outer = (ctypes.c_char * sys.getsizeof(outer)).from_address(id(outer))
inner_index = c_outer[:].find(struct.pack('P', id(inner)))
c_outer[inner_index:inner_index+struct.calcsize('P')] = struct.pack('P', id(outer))
print outer

এটি ঠিক কী করে তা পাঠকের অনুশীলন হিসাবে ছেড়ে যায়।


2
প্রথমটি: পুনরায় হিসাব নিকাশকে শূন্যে রাখুন না কেন এটি এটিকে প্রশংসাসূচকভাবে বিচ্ছিন্ন করা হয়েছে। দ্বিতীয়টি: একটি স্ব-রেফারেন্সিং টিপল তৈরি করুন এবং মুদ্রণ করুন।
nneonneo

3

কেউ ভেবেছিলেন যে তারা FlagsTypeসেট করে নতুন বস্তু তৈরি হতে বাধা দিতে পারে FlagsType.tp_new = NULLতবে তারা পদ্ধতিটি মুছে ফেলতে ভুলে গেছেন ( সমস্যা # 13204 ):

import sys
t=type(sys.flags)
t.__new__(t)

( sys.version_infoএকই বাগ আছে।)


3

ব্যবহারের allocaমধ্যে ctypesমডিউল ( ইস্যু # 13096 ):

from ctypes import *
POINTER('a'*9**8)

0

একটি সম্ভাব্য উপায় যা দিয়ে আমার পাইথনকে ক্র্যাশ করে MemoryError:

x=[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

2
এটি আমার পক্ষে কাজ করে না - এটি কেবল একটি দিয়ে পাইথনকে থামিয়ে তোলে MemoryError। এটি ওএস দ্বারা বন্ধ করা দরকার।
জর্জ

2
হাহ। ত্রুটিটি আশ্চর্যজনকভাবে অগভীর গভীরতায় ঘটে।
ব্যবহারকারী 2357112
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.