| Store | Cart

Re: [Python-Dev] Newly Built Python3 Binary Throws Segfault

From: Ryan <rym...@gmail.com>
Sat, 31 Jan 2015 13:10:18 -0600
No; I was looking for all uses of _PyRaw_Strdup. Surprisingly, it's used only a few times.

Cyd Haselton <chas...@gmail.com> wrote:
>Question:>When you said earlier that you found the problem by using grep...were>you looking for places where strdup called locale?>>On January 30, 2015 7:52:47 PM CST, Ryan Gonzalez <rym...@gmail.com>>wrote:>>Regardless, if you're looking to toy more with stuff like this, I'd>>highly>>recommend dual-booting with Ubuntu, which is what I'm doing now. (Now>I>>rarely ever boot into Windows!)>>>>On Fri, Jan 30, 2015 at 7:51 PM, Ryan Gonzalez <rym...@gmail.com>>>wrote:>>>>> Do you have just the SDK (which doesn't require Cygwin) or a rooted>>phone?>>> If so, I can upload instructions that don't use the NDK.>>>>>> On Fri, Jan 30, 2015 at 6:19 PM, Cyd Haselton <chas...@gmail.com>>>wrote:>>>>>>> This is going to take some time...here's why:>>>>>>>> Downloading and installing the NDK/SDK won't be too hard...I have>to>>>> clear some space...but my primary machine is running Windows 7 and>>I'd>>>> rather swallow hot coals than install Cygwin.  I've got next to no>>>> experience with it, other than knowing that the NDK recommends>>against>>>> it.>>>>>>>> I've got a CentOS VM...but it's currently in tarball form on an>>>> external drive for space reasons...and it only has the NDK>>installed.>>>> If I am able to get it back up and running, there's still the task>>of>>>> getting  adb connected to my device. from the VM.>>>>>>>> Not saying it's impossible...just that it'll take time...and I'll>>>> probably have to tackle it tomorrow (earliest) or Sunday (latest). >>In>>>> the meantime I'll also check to see if there's anything that can a)>>>> run in an Android terminal and b) can take a stack trace; it would>>be>>>> far, far, far easier than either option above.>>>>>>>>>>>>>>>> On Fri, Jan 30, 2015 at 4:19 PM, Ryan Gonzalez <rym...@gmail.com>>>wrote:>>>> > Do you have the Android SDK and NDK installed? If so...>>>> >>>>> > Using Google, I've created this series of steps, which may (or>may>>not)>>>> > work:>>>> >>>>> > 1. Make sure you have a copy of Python on your computer and make>>sure>>>> that>>>> > it's built with debug symbols.>>>> >>>>> > 2. Run the following commands from a shell with your phone>plugged>>in:>>>> >>>>> >   adb forward tcp:5039 tcp:5039>>>> >   adb shell /system/bin/gdbserver tcp:5039 <path to python>>executable>>>>> >   <path to ndk binary folder>/arm-linux-androideabi-gdb>>>> >>>>> > Now, GDB should have opened, so type the following commands:>>>> >>>>> >   set solib-search-path <directory holder libpython.so>>>>> >   file <path to local python executable>>>>> >   target remote :5055>>>> >   run>>>> >>>>> > Now, wait for the program to crash and type:>>>> >>>>> >   backtrace>>>> >>>>> > You should now see a complete backtrace in your terminal. To GDB,>>type:>>>> >>>>> >   quit>>>> >>>>> > *crosses fingers*>>>> >>>>> > On Fri, Jan 30, 2015 at 2:50 PM, Cyd Haselton>><chas...@gmail.com>>>>> wrote:>>>> >>>>>> >> Unfortunately it is still reporting the same function :-/.>>>> >>>>>> >> On Fri, Jan 30, 2015 at 1:44 PM, Ryan Gonzalez><rym...@gmail.com>>>>> wrote:>>>> >> > Yes...>>>> >> >>>>> >> > Can you check if it's crashing in a different function now?>>>> >> >>>>> >> > On Fri, Jan 30, 2015 at 1:39 PM, Cyd Haselton>><chas...@gmail.com>>>>> >> > wrote:>>>> >> >>>>>> >> >> Yes I did.  I did have to enter all the information in>>>> manually...I'm>>>> >> >> not familiar with automated patch application tools and even>>if I>>>> >> >> were, I'm pretty sure I wouldn't have them on my device.>>>> >> >>>>>> >> >> Just so that I'm absolutely sure I got everything>>correct...you>>>> wanted>>>> >> >> all of the lines in the patch commented out, correct? >>Basically>>>> >> >> everything referencing oldloc?>>>> >> >>>>>> >> >> On Fri, Jan 30, 2015 at 1:00 PM, Ryan Gonzalez>><rym...@gmail.com>>>>> >> >> wrote:>>>> >> >> > Are you sure the patch was applied correctly? I was SO sure>>it>>>> would>>>> >> >> > work!>>>> >> >> >>>>> >> >> > FYI, you tried the patch I attached to the email message,>>right?>>>> >> >> >>>>> >> >> > On Fri, Jan 30, 2015 at 12:58 PM, Cyd Haselton <>>>> chas...@gmail.com>>>>> >> >> > wrote:>>>> >> >> >>>>>> >> >> >> Update:  I did try the patch after getting it installed>>>> correctly,>>>> >> >> >> but>>>> >> >> >> I'm still getting a segfault on the newly built binary.>>>> >> >> >> Will post info this afternoon.>>>> >> >> >>>>>> >> >> >> On Fri, Jan 30, 2015 at 12:10 PM, Ryan Gonzalez <>>>> rym...@gmail.com>>>>> >> >> >> wrote:>>>> >> >> >> > No, it returns NULL if malloc gives it a raw pointer. It>>>> >> >> >> > unconditionally>>>> >> >> >> > checks the length of the (possibly null) string argument>>first.>>>> >> >> >> >>>>> >> >> >> > Please try the patch I attached in the last email. It>>*might*>>>> fix>>>> >> >> >> > the>>>> >> >> >> > issue.>>>> >> >> >> > Android has crappy locale handling.>>>> >> >> >> >>>>> >> >> >> > On Fri, Jan 30, 2015 at 12:09 PM, Cyd Haselton>>>> >> >> >> > <chas...@gmail.com>>>>> >> >> >> > wrote:>>>> >> >> >> >>>>>> >> >> >> >>   Unless i'm reading something incorrectly, >>_PyMem_RawStrdup>>>> is>>>> >> >> >> >> currently returning NULL when given a null pointer.>>>> >> >> >> >>>>>> >> >> >> >> From obmalloc.c>>>> >> >> >> >>>>>> >> >> >> >> _PyMem_RawStrdup(const char *str)>>>> >> >> >> >> {>>>> >> >> >> >>     size_t size;>>>> >> >> >> >> char *copy;>>>> >> >> >> >>     size = strlen(str) + 1;>>>> >> >> >> >>     copy = PyMem_RawMalloc(size);>>>> >> >> >> >>     if (copy == NULL)>>>> >> >> >> >>         return NULL;>>>> >> >> >> >> memcpy(copy, str, size);>>>> >> >> >> >> return copy;>>>> >> >> >> >>           }>>>> >> >> >> >>>>>> >> >> >> >> On Fri, Jan 30, 2015 at 11:56 AM, Ryan Gonzalez>>>> >> >> >> >> <rym...@gmail.com>>>>> >> >> >> >> wrote:>>>> >> >> >> >> > I seriously doubt the issue is in that file;>>>> _PyMem_RawStrdup>>>> >> >> >> >> > crashes>>>> >> >> >> >> > when>>>> >> >> >> >> > calling strlen. It's that whatever is calling it is>>likely>>>> >> >> >> >> > asking>>>> >> >> >> >> > it>>>> >> >> >> >> > to>>>> >> >> >> >> > duplicate a null pointer. Basically, it's probably>the>>>> caller's>>>> >> >> >> >> > fault.>>>> >> >> >> >> >>>>> >> >> >> >> > You could always try modifying _PyMem_RawStrdup to>>return>>>> NULL>>>> >> >> >> >> > when>>>> >> >> >> >> > given a>>>> >> >> >> >> > null pointer and see where it then segfaults.>>>> >> >> >> >> >>>>> >> >> >> >> > On Fri, Jan 30, 2015 at 11:53 AM, Cyd Haselton>>>> >> >> >> >> > <chas...@gmail.com>>>>> >> >> >> >> > wrote:>>>> >> >> >> >> >>>>>> >> >> >> >> >> Alternatively, is there a hassle-free way to find>out>>what>>>> >> >> >> >> >> changed>>>> >> >> >> >> >> in>>>> >> >> >> >> >> obmalloc.c between 2.7.x and 3.4.x?>>>> >> >> >> >> >>>>>> >> >> >> >> >>>>>> >> >> >> >> >> On Fri, Jan 30, 2015 at 9:29 AM, Cyd Haselton>>>> >> >> >> >> >> <chas...@gmail.com>>>>> >> >> >> >> >> wrote:>>>> >> >> >> >> >> > There's a related strdup patch for readline.c,>>mentioned>>>> >> >> >> >> >> > here:http://bugs.python.org/issue21390 and here>>>> >> >> >> >> >> >>>https://github.com/rave-engine/python3-android/issues/2.>>>> >> >> >> >> >> > There's a patch, but I'm not sure how to modify it>>for>>>> >> >> >> >> >> > obmalloc.c,>>>> >> >> >> >> >> > as>>>> >> >> >> >> >> > (I think) the functions all belong to>>Python...they're>>>> all>>>> >> >> >> >> >> > prefixed>>>> >> >> >> >> >> > with _PyXx>>>> >> >> >> >> >> >>>>> >> >> >> >> >> > On Fri, Jan 30, 2015 at 9:05 AM, Cyd Haselton>>>> >> >> >> >> >> > <chas...@gmail.com>>>>> >> >> >> >> >> > wrote:>>>> >> >> >> >> >> >> Absolutely.  Good thing I have addr2line on>device>>>> >> >> >> >> >> >>>>>> >> >> >> >> >> >> /bld/python/Python-3.4.2 $ addr2line -C -f -e>>>> >> >> >> >> >> >> /lib/libpython3.4m.so.1.0>>>> >> >> >> >> >> >> 0008bbc8>>>> >> >> >> >> >> >> _PyMem_RawStrdup>>>> >> >> >> >> >> >> /bld/python/Python-3.4.2/Objects/obmalloc.c:323>>>> >> >> >> >> >> >> /bld/python/Python-3.4.2 $>>>> >> >> >> >> >> >>>>>> >> >> >> >> >> >>>>>> >> >> >> >> >> >>>>>> >> >> >> >> >> >> On Thu, Jan 29, 2015 at 8:26 PM, Ryan>><rym...@gmail.com>>>> >>>>> >> >> >> >> >> >> wrote:>>>> >> >> >> >> >> >>> Could you try the steps at>>>> >> >> >> >> >> >>> http://stackoverflow.com/a/11369475/2097780?>They>>>> >> >> >> >> >> >>> allow you to get a better idea of where libc is>>>> crashing.>>>> >> >> >> >> >> >>>>>>> >> >> >> >> >> >>> Cyd Haselton <chas...@gmail.com> wrote:>>>> >> >> >> >> >> >>>>>>>> >> >> >> >> >> >>>> Managed to get this out of logcat:>>>> >> >> >> >> >> >>>> F(11914) Fatal signal 11 (SIGSEGV) at>0x00000000>>>> >> >> >> >> >> >>>> (code=1),>>>> >> >> >> >> >> >>>> thread>>>> >> >> >> >> >> >>>> 11914 (python)  (libc)>>>> >> >> >> >> >> >>>>>>>> >> >> >> >> >> >>>> [ 01-29 19:30:55.855 23373:23373 F/libc     ]>>>> >> >> >> >> >> >>>> Fatal signal 11 (SIGSEGV) at 0x00000000>>(code=1),>>>> thread>>>> >> >> >> >> >> >>>> 23373>>>> >> >> >> >> >> >>>> (python)>>>> >> >> >> >> >> >>>>>>>> >> >> >> >> >> >>>> Less detail than strace but it seems to be that>>>> python is>>>> >> >> >> >> >> >>>> segfaulting>>>> >> >> >> >> >> >>>> libc...>>>> >> >> >> >> >> >>>>>>>> >> >> >> >> >> >>>> On Wed, Jan 28, 2015 at 11:23 AM, Ryan Gonzalez>>>> >> >> >> >> >> >>>> <rym...@gmail.com>>>>> >> >> >> >> >> >>>> wrote:>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>  On Wed, Jan 28, 2015 at 10:43 AM, Guido van>>Rossum>>>> >> >> >> >> >> >>>>> <gui...@python.org>>>>> >> >> >> >> >> >>>>> wrote:>>>> >> >> >> >> >> >>>>>>>>>> >> >> >> >> >> >>>>>>>>>> >> >> >> >> >> >>>>>>  What I see in the strace:>>>> >> >> >> >> >> >>>>>>>>>> >> >> >> >> >> >>>>>>  ... load libpython3.4m.so.1.0>>>> >> >> >> >> >> >>>>>>  ... load libm>>>> >> >> >> >> >> >>>>>>  ... open /dev/__properties__ and do>something>>to it>>>> >> >> >> >> >> >>>>>> (what?)>>>> >> >> >> >> >> >>>>>>  ... get current time>>>> >> >> >> >> >> >>>>>>  ... allocate memory>>>> >> >> >> >> >> >>>>>>  ... getuid>>>> >> >> >> >> >> >>>>>>  ... segfault>>>> >> >> >> >> >> >>>>>>>>>> >> >> >> >> >> >>>>>>  That's not a lot to go on, but it doesn't>>look as>>>> if>>>> >> >> >> >> >> >>>>>> it>>>> >> >> >> >> >> >>>>>> has>>>> >> >> >> >> >> >>>>>> started to>>>> >> >> >> >> >> >>>>>>  load modules yet.>>>> >> >> >> >> >> >>>>>>>>>> >> >> >> >> >> >>>>>>  Does /dev/__properties__ ring a bell? Not to>>me.>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>> >> >> >> >> >> >>>>>>>>>>>https://android.googlesource.com/platform/system/core/+/tools_r22/init/property_service.c>>-- >Sent from my Android device with K-9 Mail. Please excuse my brevity.

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
Check out my website: http://kirbyfan64.github.io/
_______________________________________________
Python-Dev mailing list
Pyth...@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/python-dev-ml%40activestate.com

Recent Messages in this Thread
Cyd Haselton Jan 28, 2015 02:43 pm
Ryan Jan 31, 2015 07:10 pm
Cyd Haselton Jan 30, 2015 08:50 pm
Ryan Gonzalez Jan 30, 2015 10:19 pm
Guido van Rossum Jan 28, 2015 03:43 pm
Cyd Haselton Jan 28, 2015 04:34 pm
Guido van Rossum Jan 28, 2015 04:43 pm
Ryan Gonzalez Jan 28, 2015 05:23 pm
Cyd Haselton Jan 28, 2015 10:42 pm
Cyd Haselton Jan 29, 2015 11:32 pm
Cyd Haselton Jan 30, 2015 01:32 am
Ryan Jan 30, 2015 02:26 am
Cyd Haselton Jan 30, 2015 03:05 pm
Cyd Haselton Jan 30, 2015 03:29 pm
Cyd Haselton Jan 30, 2015 05:53 pm
Ryan Gonzalez Jan 30, 2015 05:56 pm
Cyd Haselton Jan 30, 2015 06:09 pm
Ryan Gonzalez Jan 30, 2015 06:10 pm
Cyd Haselton Jan 30, 2015 06:34 pm
Cyd Haselton Jan 30, 2015 06:58 pm
Ryan Gonzalez Jan 30, 2015 07:00 pm
Ryan Gonzalez Jan 30, 2015 05:52 pm
Cyd Haselton Jan 30, 2015 06:00 pm
Ryan Gonzalez Jan 30, 2015 06:04 pm
Victor Stinner Jan 30, 2015 08:04 pm
Victor Stinner Jan 30, 2015 08:07 pm
Cyd Haselton Jan 30, 2015 08:49 pm
Cyd Haselton Jan 31, 2015 06:12 pm
Ryan Jan 31, 2015 07:09 pm
Cyd Haselton Jan 31, 2015 07:45 pm
Cyd Haselton Jan 31, 2015 07:15 pm
Cyd Haselton Jan 31, 2015 07:21 pm
chas...@gmail.com Jan 31, 2015 12:10 pm
Ryan Gonzalez Jan 31, 2015 01:52 am
Messages in this thread