| Store | Cart

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

From: Cyd Haselton <chas...@gmail.com>
Sat, 31 Jan 2015 13:21:43 -0600
Very interesting. I got this error

Fatal Python error: Py_Initialize: Unable to get the locale encoding
NotImplementedError
Aborted
generate-posix-vars failed
make: *** [pybuilddir.txt] Error 1

.but it didn't (of course) segfault.  I'll pull gdb, get the results and send them.

On January 31, 2015 1:10:18 PM CST, Ryan <rym...@gmail.com> wrote:
>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/__properti
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
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