As far as I remember DBMS_OUTPUT buffer gets flushed when the host procedure ends meaning, if the procedure never ends your buffer never gets flushed.

I also remember an Oracle note stating that there is no way to flush the content of the buffer "during" the execution of the host procedure.