Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Infinite loop problem

Ok, I am working on it. Thank you for your reply!

2015-11-25 16:27 GMT-02:00 Nathan Ridge <zeratul976@xxxxxxxxxxx>:
Could you file a bug report so we don't lose track of this issue? Thanks!

It would be especially helpful if you can attach a self-contained code example that reproduces the problem.

Regards,
Nate

________________________________
> Date: Wed, 25 Nov 2015 13:49:38 -0200
> From: arescarv@xxxxxxxxx
> To: cdt-dev@xxxxxxxxxxx
> Subject: Re: [cdt-dev] Infinite loop problem
>
> Example of code from zend_API.c, line 3606:
>   property_info = pemalloc(sizeof(zend_property_info), 1); // <- This
> line causes a infinite loop!
>
> #define pemalloc(size, persistent)
> ((persistent)?__zend_malloc(size):emalloc(size))
>
> # define ZEND_ALLOCATOR(size) \
>      ZEND_MM_BINS_INFO(_ZEND_BIN_ALLOCATOR_SELECTOR_START, size, y) \
>      ((size <= ZEND_MM_MAX_LARGE_SIZE) ? _emalloc_large(size) :
> _emalloc_huge(size)) \
>      ZEND_MM_BINS_INFO(_ZEND_BIN_ALLOCATOR_SELECTOR_END, size, y)
>
> # define _emalloc(size) \
>      (__builtin_constant_p(size) ? \
>          ZEND_ALLOCATOR(size) \
>      : \
>          _emalloc(size) \
>      )
>
> /* num, size, count, pages */
> #define ZEND_MM_BINS_INFO(_, x, y) \
>      _( 0,    8,  512, 1, x, y) \
>      _( 1,   16,  256, 1, x, y) \
>      _( 2,   24,  170, 1, x, y) \
>      _( 3,   32,  128, 1, x, y) \
>      _( 4,   40,  102, 1, x, y) \
>      _( 5,   48,   85, 1, x, y) \
>      _( 6,   56,   73, 1, x, y) \
>      _( 7,   64,   64, 1, x, y) \
>      _( 8,   80,   51, 1, x, y) \
>      _( 9,   96,   42, 1, x, y) \
>      _(10,  112,   36, 1, x, y) \
>      _(11,  128,   32, 1, x, y) \
>      _(12,  160,   25, 1, x, y) \
>      _(13,  192,   21, 1, x, y) \
>      _(14,  224,   18, 1, x, y) \
>      _(15,  256,   16, 1, x, y) \
>      _(16,  320,   64, 5, x, y) \
>      _(17,  384,   32, 3, x, y) \
>      _(18,  448,    9, 1, x, y) \
>      _(19,  512,    8, 1, x, y) \
>      _(20,  640,   32, 5, x, y) \
>      _(21,  768,   16, 3, x, y) \
>      _(22,  896,    9, 2, x, y) \
>      _(23, 1024,    8, 2, x, y) \
>      _(24, 1280,   16, 5, x, y) \
>      _(25, 1536,    8, 3, x, y) \
>      _(26, 1792,   16, 7, x, y) \
>      _(27, 2048,    8, 4, x, y) \
>      _(28, 2560,    8, 5, x, y) \
>      _(29, 3072,    4, 3, x, y)
> ....
>
> 2015-11-25 13:38 GMT-02:00 Alisson Linhares
> <arescarv@xxxxxxxxx<mailto:arescarv@xxxxxxxxx>>:
> Hi guys, I am having a strange behavior with CDT. The method
> getExpressionType, in CASTUnaryExpression.java, is entering into an
> infinite loop for some complex expressions.
>
> To see this behavior, you can use PHP project, more precisely this
> file: https://github.com/php/php-src/blob/master/Zend/zend_API.c#L3606
> and put this line inside the getExpressionType method:
> System.out.println( this.getRawSignature() );
>
> This is my visitor:
> public class DemoVisitor extends ASTVisitor {
>      public Demo() {
>          shouldVisitExpressions = true;
>      }
>
>      public int visit( IASTExpression _expression_ ) {
>           System.out.println( _expression_.getExpressionType() ); //
> Prints the type of an _expression_
>          return PROCESS_CONTINUE;
>      }
> }
>
> ps.: I think this problem may be related to C/C++ macro expansions,
> because it only happens when we try to parse complex macro
> "expressions". Has anyone ever had a similar problem?
>
>
> _______________________________________________ cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx To change your delivery options, retrieve your
> password, or unsubscribe from this list, visit
> https://dev.eclipse.org/mailman/listinfo/cdt-dev

_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/cdt-dev


Back to the top