| Store | Cart

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

From: Cyd Haselton <chas...@gmail.com>
Fri, 30 Jan 2015 12:34:18 -0600
Ok...that makes sense.. apologies I do not do a lot of debugging. My
goal was to get Python (then spidermonkey) on my device then start
learning languages where i'd need to learn debugging.

Tried patch, see my reply, agree about Android's locale...at least
where native codeis concerned

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>> >> >>>>>  is the code that works with that file.>> >> >>>>>>> >> >>>>>  This explains it a bit (slides 24-29). Looks like something to>> >> >>>>> do>> >> >>>>> with>> >> >>>>>  interprocess communication. Likely has nothing to do with Python>> >> >>>>> itself.>> >> >>>>>>> >> >>>>>  Maybe this would be useful?>> >> >>>>>>> >> >>>>>>>> >> >>>>>>  That stack trace would be really helpful.>> >> >>>>>>>> >> >>>>>>  On Wed, Jan 28, 2015 at 8:34 AM, Cyd Haselton>> >> >>>>>> <chas...@gmail.com>>> >> >>>>>> wrote:>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>  Apologies...I'm not sure what a stack track is, but I do have>> >> >>>>>>> the>> >> >>>>>>>  strace.  Nearest I can tell, it happens due to an open call,>> >> >>>>>>> though I>> >> >>>>>>>  am probably wrong.>> >> >>>>>>>  Attaching the strace output to this email.  I'm going to head>> >> >>>>>>> back to>> >> >>>>>>>  the documentation and to back out of some Android-related>> >> >>>>>>> changes>> >> >>>>>>> in>> >> >>>>>>>  _localemodule.c>> >> >>>>>>>>> >> >>>>>>>  On Wed, Jan 28, 2015 at 9:43 AM, Guido van Rossum>> >> >>>>>>> <gui...@python.org>>> >> >>>>>>>  wrote:>> >> >>>>>>>>>> >> >>>>>>>>  There could be a million differences relevant (unicode, ints,>> >> >>>>>>>> ...).>> >> >>>>>>>>  Perhaps>> >> >>>>>>>>  the importlib bootstrap is failing. Perhaps the dynamic>> >> >>>>>>>> loading>> >> >>>>>>>> code>> >> >>>>>>>>  changed. Did you get a stack track? (IIRC strace shows a>> >> >>>>>>>> syscall>> >> >>>>>>>> trace>> >> >>>>>>>>  -->> >> >>>>>>>>  also useful, but doesn't tell you precisely how>> >> >>>>>>>> it segfaulted.)>> >> >>>>>>>>>> >> >>>>>>>>  On Wed, Jan 28, 2015 at 6:43 AM, Cyd Haselton>> >> >>>>>>>> <chas...@gmail.com>>> >> >>>>>>>>  wrote:>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>  All,>> >> >>>>>>>>>  I recently ditched my attempts to port Python 2.7.8 to>> >> >>>>>>>>> Android>> >> >>>>>>>>> in>> >> >>>>>>>>>  favor of Python 3.4.2.  Unfortunately, after using the same>> >> >>>>>>>>> configure>> >> >>>>>>>>>  options in the same environment, and modifying the setup.py>> >> >>>>>>>>> as>> >> >>>>>>>>> needed,>> >> >>>>>>>>>  the newly built binary throws a segfault when the>> >> >>>>>>>>> generate-posix-vars>> >> >>>>>>>>>  portion of the build is reached...and when it is run as well>> >> >>>>>>>>> (i.e.>> >> >>>>>>>>>  ./python --help, ./python -E -S -m sysconfig, or similar)>> >> >>>>>>>>>>> >> >>>>>>>>>  I took a strace of ./python, however I'm a bit lost when>> >> >>>>>>>>> reviewing>> >> >>>>>>>>> it.>> >> >>>>>>>>>  Any ideas as to what may be going on...i.e. why Python 2.7>> >> >>>>>>>>> works but>> >> >>>>>>>>>  3.x throws a segfault?>> >> >>>>>>>>>>> >> >>>>>>>>>  Thanks in advance,>> >> >>>>>>>>>  Cyd>> >> >>>>>>>>> ________________________________>> >> >>>>>>>>>>> >> >>>>>>>>>  Python-Dev mailing list>> >> >>>>>>>>>>> >> >>>>>>>>> Pyth...@python.org>> >> >>>>>>>>>  https://mail.python.org/mailman/listinfo/python-dev>> >> >>>>>>>>>  Unsubscribe:>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>> https://mail.python.org/mailman/options/python-dev/guido%40python.org>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>  -->> >> >>>>>>>>  --Guido van Rossum (python.org/~guido)>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>  -->> >> >>>>>>  --Guido van Rossum (python.org/~guido)>> >> >>>>>>>> >> >>>>>> ________________________________>> >> >>>>>>>> >> >>>>>>  Python-Dev mailing list>> >> >>>>>>  Pyth...@python.org>> >> >>>>>>  https://mail.python.org/mailman/listinfo/python-dev>> >> >>>>>>  Unsubscribe:>> >> >>>>>>>> >> >>>>>>>> >> >>>>>> https://mail.python.org/mailman/options/python-dev/rymg19%40gmail.com>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>  -->> >> >>>>>  Ryan>> >> >>>>>  If anybody ever asks me why I prefer C++ to C, my answer will be>> >> >>>>> simple:>> >> >>>>>  "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think>> >> >>>>> that was>> >> >>>>>  nul-terminated.">> >> >>>>>  Personal reality distortion fields are immune to contradictory>> >> >>>>> evidence.>> >> >>>>> ->> >> >>>>>  srean>> >> >>>>>  Check out my website: http://kirbyfan64.github.io/>> >> >>>>> >> >>>>> >> >>> -->> >> >>> Sent from my Android phone with K-9 Mail. Please excuse my brevity.>> >> >>> Check out my website: http://kirbyfan64.github.io/>> >>> >>> >>> >>> > -->> > Ryan>> > If anybody ever asks me why I prefer C++ to C, my answer will be simple:>> > "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think that was>> > nul-terminated.">> > Personal reality distortion fields are immune to contradictory evidence.>> > ->> > srean>> > Check out my website: http://kirbyfan64.github.io/>>>>> --> Ryan> If anybody ever asks me why I prefer C++ to C, my answer will be simple:> "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think that was> nul-terminated."> Personal reality distortion fields are immune to contradictory evidence. -> srean> 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